7a. Teoria drzew - kodowanie i dekodowanie

Save this PDF as:
 WORD  PNG  TXT  JPG

Wielkość: px
Rozpocząć pokaz od strony:

Download "7a. Teoria drzew - kodowanie i dekodowanie"

Transkrypt

1 7a. Teoria drzew - kodowanie i dekodowanie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

2 1 Kodowanie drzew 2 Dekodowanie drzew rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

3 Drzewo uporządkowane Choć drzewo poszukiwań binarnych jest bardzo praktyczne, gdy chcemy, by program miał szybki dostęp do opartej na nim bazy danych, to w praktyce nie zawsze takie bazy danych się tworzy (np. typowa struktura katalogów zazwyczaj nie ma dokładnie 2 podkatalogów każdego katalogu). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

4 Drzewo uporządkowane Choć drzewo poszukiwań binarnych jest bardzo praktyczne, gdy chcemy, by program miał szybki dostęp do opartej na nim bazy danych, to w praktyce nie zawsze takie bazy danych się tworzy (np. typowa struktura katalogów zazwyczaj nie ma dokładnie 2 podkatalogów każdego katalogu). Dlatego taką definicję warto uogólnić: Drzewo uporządkowane Jeśli dla każdego węzła drzewa z wyróżnionym korzeniem jego dzieci są uporządkowane tj. wiemy które z nich występuje wcześniej, a które później w jakimś ustalonym porządku, to mówimy, że drzewo jest uporządkowane. Na rysunku, tak uporządkowane dzieci rysujemy od strony lewej do prawej. Kolejność dzieci u i v zapisujemy u < v, nawet jeśli nie są one liczbami. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

5 Drzewo uporządkowane - uwagi rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

6 Drzewo uporządkowane - uwagi Przykładowym porządkiem nieliczbowym ustawiania dzieci w kolejności może być porządek alfabetyczny. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

7 Drzewo uporządkowane - uwagi Przykładowym porządkiem nieliczbowym ustawiania dzieci w kolejności może być porządek alfabetyczny. W szczególności, drzewo poszukiwań binarnych było uporządkowane - lewe dziecko poprzedzało prawe. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

8 Drzewo uporządkowane - uwagi Przykładowym porządkiem nieliczbowym ustawiania dzieci w kolejności może być porządek alfabetyczny. W szczególności, drzewo poszukiwań binarnych było uporządkowane - lewe dziecko poprzedzało prawe. Powstaje teraz pytanie: skoro to jest najbardziej popularna i wygodna struktura danych, jak zapisać ją w pamięci komputera (i potem zdekodować)? W końcu komputer przechowuje w pamięci ciągi symboli, a nie jakieś rysunki. Temu zagadnieniu będzie poświęcona reszta wykładu. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

9 Drzewo uporządkowane - uwagi Przykładowym porządkiem nieliczbowym ustawiania dzieci w kolejności może być porządek alfabetyczny. W szczególności, drzewo poszukiwań binarnych było uporządkowane - lewe dziecko poprzedzało prawe. Powstaje teraz pytanie: skoro to jest najbardziej popularna i wygodna struktura danych, jak zapisać ją w pamięci komputera (i potem zdekodować)? W końcu komputer przechowuje w pamięci ciągi symboli, a nie jakieś rysunki. Temu zagadnieniu będzie poświęcona reszta wykładu. Od tego momentu, o wszystkich drzewach, które się pojawią, zakładamy, że są uporządkowane. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

10 Algorytmy przechodzenia drzewa Algorytmy przechodzenia drzewa Algorytm przechodzenia drzewa to algorytm, który ustawia w ciąg wszystkie wierzchołki skończonego uporządkowanego drzewa z wyróżnionym korzeniem według pewnej reguły. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

11 Algorytmy przechodzenia drzewa Algorytmy przechodzenia drzewa Algorytm przechodzenia drzewa to algorytm, który ustawia w ciąg wszystkie wierzchołki skończonego uporządkowanego drzewa z wyróżnionym korzeniem według pewnej reguły. Trzy najbardziej popularne takie algorytmy to PREORDER, POSTORDER i INORDER (przy czym ten trzeci działa tylko dla drzew binarnych), ustawiające wierzchołki w porządkach odpowiednio prefiksowym, postfiksowym i infiksowym. Są to algorytmy rekurencyjne. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

12 Porządek prefiksowy Porządek prefiksowy Porządek prefiksowy drzewa z wyróżnionym korzeniem to takie uporządkowanie wierzchołków, w którym korzeń drzewa umieszczamy na początku listy, a dalej znajdują się poddrzewa uporządkowane w kolejności swoich korzeni (rysunkowo: kolejność od lewej do prawej). Innymi słowy, dzieci w tym porządku pojawiają się po rodzicach. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

13 Porządek prefiksowy Porządek prefiksowy Porządek prefiksowy drzewa z wyróżnionym korzeniem to takie uporządkowanie wierzchołków, w którym korzeń drzewa umieszczamy na początku listy, a dalej znajdują się poddrzewa uporządkowane w kolejności swoich korzeni (rysunkowo: kolejność od lewej do prawej). Innymi słowy, dzieci w tym porządku pojawiają się po rodzicach. Tworzy się go algorytmem PREORDER. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

14 Algorytm PREORDER PREORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

15 Algorytm PREORDER PREORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. I. Umieść v na liście L(v). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

16 Algorytm PREORDER PREORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. I. Umieść v na liście L(v). II. Dla każdego w - dziecka v (idąc od lewej do prawej) wykonaj: PREORDER(w) {otrzymujemy w ten sposób listę L(w) złożoną z wierzchołka w i jego potomków}, a następnie dołącz otrzymaną listę L(w) na końcu listy L(v). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

17 Algorytm PREORDER PREORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. I. Umieść v na liście L(v). II. Dla każdego w - dziecka v (idąc od lewej do prawej) wykonaj: PREORDER(w) {otrzymujemy w ten sposób listę L(w) złożoną z wierzchołka w i jego potomków}, a następnie dołącz otrzymaną listę L(w) na końcu listy L(v). Rezultat: L(v) - lista wierzchołków drzewa, na której rodzice znajdują się zawsze przed swoimi dziećmi (czyli w porządku prefiksowym). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

18 PREORDER - przykład Spróbujemy algorytmem PREORDER prefiksowo uporządkować powyższe drzewo. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

19 PREORDER - przykład Spróbujemy algorytmem PREORDER prefiksowo uporządkować powyższe drzewo. Warto zauważyć, że komenda PREORDER(x) oznacza w przekładzie na ludzki: uporządkuj prefiksowo x i jego potomków. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

20 PREORDER - przykład Zaczynamy od PREORDER(A), czyli umieszczamy A na początku (i jednocześnie końcu) listy (pojawi się w lewym górnym rogu) i wykonujemy PREORDER(B) (a jak skończymy, PREORDER(C)). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

21 PREORDER - przykład By wykonać PREORDER(B), umieszczamy B na końcu listy i wykonujemy PREORDER(D) (a jak skończymy, PREORDER(E)). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

22 PREORDER - przykład By wykonać PREORDER(D), umieszczamy D na końcu listy i wykonujemy PREORDER(F ) (bo to jedyne dziecko D). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

23 PREORDER - przykład By wykonać PREORDER(F ), umieszczamy F na końcu listy. Nie robimy nic więcej, bo F nie ma dzieci. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

24 PREORDER - przykład By wykonać PREORDER(F ), umieszczamy F na końcu listy. Nie robimy nic więcej, bo F nie ma dzieci. Skoro tak, zakończyliśmy też PREORDER(D) i możemy przejść do PREORDER(E). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

25 PREORDER - przykład By wykonać PREORDER(E), umieszczamy E na końcu listy i wykonujemy kolejno PREORDER(G), PREORDER(H) i PREORDER (I ). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

26 PREORDER - przykład By wykonać PREORDER(E), umieszczamy E na końcu listy i wykonujemy kolejno PREORDER(G), PREORDER(H) i PREORDER (I ). Jako, że G, H i I są liśćmi (nie mają dzieci), wykonanie tych trzech ostatnich procedur spowoduje jedynie dopisanie GHI na końcu listy. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

27 PREORDER - przykład By wykonać PREORDER(E), umieszczamy E na końcu listy i wykonujemy kolejno PREORDER(G), PREORDER(H) i PREORDER (I ). Jako, że G, H i I są liśćmi (nie mają dzieci), wykonanie tych trzech ostatnich procedur spowoduje jedynie dopisanie GHI na końcu listy. W ten sposób ukończyliśmy PREORDER (B) i przechodzimy do zawieszonego wykonania PREORDER (C). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

28 PREORDER - przykład By wykonać PREORDER(C), umieszczamy C na końcu listy i wykonujemy kolejno PREORDER(J) rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

29 PREORDER - przykład By wykonać PREORDER(C), umieszczamy C na końcu listy i wykonujemy kolejno PREORDER(J) (który spowoduje tylko dopisanie J na końcu listy) i PREORDER (K), rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

30 PREORDER - przykład By wykonać PREORDER(C), umieszczamy C na końcu listy i wykonujemy kolejno PREORDER(J) (który spowoduje tylko dopisanie J na końcu listy) i PREORDER (K), który dopisze do listy kolejno wierzchołki K, L, M. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

31 PREORDER - wynik i interpretacja graficzna Algorytm PREORDER prowadzi nas zatem do następującego uporządkowania wierzchołków drzewa: ABDFEGHICJKLM. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

32 PREORDER - wynik i interpretacja graficzna Algorytm PREORDER prowadzi nas zatem do następującego uporządkowania wierzchołków drzewa: ABDFEGHICJKLM. Ten ciąg łatwo można utworzyć przechodząc drzewo wzdłuż jego obwodu jak na rysunku poniżej. Startujemy od korzenia A i za każdym razem, kiedy przechodzimy koło wierzchołka, który jeszcze nie znalazł się na liście, dopisujemy ten wierzchołek na końcu listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

33 Porządek postfiksowy Porządek postfiksowy Porządek postfiksowy drzewa z wyróżnionym korzeniem to takie uporządkowanie wierzchołków, w którym poddrzewa są umieszczone najpierw (rysunkowo: kolejność od lewej do prawej), a potem dopiero korzeń. Innymi słowy, dzieci w tym porządku pojawiają się przed rodzicami. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

34 Porządek postfiksowy Porządek postfiksowy Porządek postfiksowy drzewa z wyróżnionym korzeniem to takie uporządkowanie wierzchołków, w którym poddrzewa są umieszczone najpierw (rysunkowo: kolejność od lewej do prawej), a potem dopiero korzeń. Innymi słowy, dzieci w tym porządku pojawiają się przed rodzicami. Tworzy się go algorytmem POSTORDER. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

35 Algorytm POSTORDER POSTORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

36 Algorytm POSTORDER POSTORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. I. Niech L(v) = (pusta lista). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

37 Algorytm POSTORDER POSTORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. I. Niech L(v) = (pusta lista). II. Dla każdego w - dziecka v (idąc od lewej do prawej) wykonaj: POSTORDER(w) {otrzymujemy w ten sposób listę L(w) złożoną z wierzchołka w i jego potomków}, a następnie dołącz otrzymaną listę L(w) na końcu listy L(v). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

38 Algorytm POSTORDER POSTORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. I. Niech L(v) = (pusta lista). II. Dla każdego w - dziecka v (idąc od lewej do prawej) wykonaj: POSTORDER(w) {otrzymujemy w ten sposób listę L(w) złożoną z wierzchołka w i jego potomków}, a następnie dołącz otrzymaną listę L(w) na końcu listy L(v). III. Dołącz wierzchołek v na końcu listy L(v). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

39 Algorytm POSTORDER POSTORDER(v) Dane: Skończone, uporządkowane drzewo z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, w-węzeł. I. Niech L(v) = (pusta lista). II. Dla każdego w - dziecka v (idąc od lewej do prawej) wykonaj: POSTORDER(w) {otrzymujemy w ten sposób listę L(w) złożoną z wierzchołka w i jego potomków}, a następnie dołącz otrzymaną listę L(w) na końcu listy L(v). III. Dołącz wierzchołek v na końcu listy L(v). Rezultat: L(v) - lista wierzchołków drzewa, na której rodzice znajdują się zawsze po swoich dzieciach (czyli w porządku postfiksowym). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

40 POSTORDER - przykład Spróbujemy algorytmem POSTORDER postfiksowo uporządkować powyższe drzewo. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

41 POSTORDER - przykład Spróbujemy algorytmem POSTORDER postfiksowo uporządkować powyższe drzewo. Warto zauważyć, że komenda POSTORDER(x) oznacza w przekładzie na ludzki: uporządkuj postfiksowo x i jego potomków. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

42 POSTORDER - przykład Zaczynamy od POSTORDER(A), co oznacza, że musimy wykonać POSTORDER(B), następnie POSTORDER (C) i dopiero potem dopisać A na końcu listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

43 POSTORDER - przykład Wykonujemy POSTORDER(B), co oznacza, że musimy wykonać POSTORDER(D), następnie POSTORDER (E) i dopiero potem dopisać B na końcu listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

44 POSTORDER - przykład Wykonujemy POSTORDER(D), co oznacza, że musimy wykonać POSTORDER(F ) i dopiero potem dopisać D na końcu listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

45 POSTORDER - przykład Wykonujemy POSTORDER(F ), co oznacza dopisanie rozpoczęcie listy od F. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

46 POSTORDER - przykład Wykonujemy POSTORDER(F ), co oznacza dopisanie rozpoczęcie listy od F. Skoro POSTORDER(F ) został wykonany, możemy dokończyć POSTORDER(D), czyli dopisać D na końcu listy (od tej pory lista pojawia się z lewej strony drzewa). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

47 POSTORDER - przykład Skoro POSTORDER(D) został wykonany, przechodzimy do kolejnego kroku wykonania POSTORDER(B), czyli POSTORDER(E). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

48 POSTORDER - przykład Skoro POSTORDER(D) został wykonany, przechodzimy do kolejnego kroku wykonania POSTORDER(B), czyli POSTORDER(E). Wykonujemy POSTORDER(E), co oznacza, że musimy wykonać POSTORDER(G), następnie POSTORDER (H), POSTORDER(I ) i dopiero potem dopisać E na końcu listy. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

49 POSTORDER - przykład G, H, I nie mają dzieci, więc wykonanie POSTORDER(G), POSTORDER (H) i POSTORDER(I ) sprowadza się do dopisania G, H, I na końcu listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

50 POSTORDER - przykład Skoro rozpatrzyliśmy już algorytm POSTORDER dla wszystkich dzieci E, kończymy POSTORDER(E) dopisując E na końcu listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

51 POSTORDER - przykład Skoro rozpatrzyliśmy już algorytm POSTORDER dla wszystkich dzieci B, kończymy POSTORDER(B) dopisując B na końcu listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

52 POSTORDER - przykład By kontynuować POSTORDER(A), musimy teraz wykonać POSTORDER (C). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

53 POSTORDER - przykład By kontynuować POSTORDER(A), musimy teraz wykonać POSTORDER (C). Nie będziemy już tego poddrzewa analizować szczegółowo: analogicznie do POSTORDER(B) do końca listy dopiszemy: rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

54 POSTORDER - przykład By kontynuować POSTORDER(A), musimy teraz wykonać POSTORDER (C). Nie będziemy już tego poddrzewa analizować szczegółowo: analogicznie do POSTORDER(B) do końca listy dopiszemy: JLMKC. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

55 POSTORDER - przykład Skoro rozpatrzyliśmy już algorytm POSTORDER dla wszystkich dzieci A, kończymy POSTORDER(A) dopisując A na końcu listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

56 POSTORDER - wynik i interpretacja graficzna Algorytm POSTORDER prowadzi nas zatem do następującego uporządkowania wierzchołków drzewa: FDGHIEBJLMKCA. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

57 POSTORDER - wynik i interpretacja graficzna Algorytm POSTORDER prowadzi nas zatem do następującego uporządkowania wierzchołków drzewa: FDGHIEBJLMKCA. Ten ciąg łatwo można utworzyć przechodząc drzewo wzdłuż jego obwodu jak na rysunku poniżej. Startujemy od korzenia A i za każdym razem, kiedy przechodzimy koło wierzchołka, który jeszcze nie znalazł się na liście, dopisujemy ten wierzchołek NA POCZĄTKU listy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

58 Porządek infiksowy Trzeci sposób przechodzenia drzewa dotyczy tylko uporządkowanych drzew binarnych z wyróżnionym korzeniem. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

59 Porządek infiksowy Trzeci sposób przechodzenia drzewa dotyczy tylko uporządkowanych drzew binarnych z wyróżnionym korzeniem. Porządek infiksowy Porządek infiksowy drzewa binarnego z wyróżnionym korzeniem to takie uporządkowanie wierzchołków, w którym dany korzeń jest umieszczony pomiędzy wierzchołkami poddrzewa, którego korzeniem jest jego lewe dziecko, a wierzchołkami poddrzewa, którego korzeniem jest jego prawe dziecko. Innymi słowy, lewe dzieci w tym porządku pojawiają się przed rodzicami, a prawe po nich. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

60 Porządek infiksowy Trzeci sposób przechodzenia drzewa dotyczy tylko uporządkowanych drzew binarnych z wyróżnionym korzeniem. Porządek infiksowy Porządek infiksowy drzewa binarnego z wyróżnionym korzeniem to takie uporządkowanie wierzchołków, w którym dany korzeń jest umieszczony pomiędzy wierzchołkami poddrzewa, którego korzeniem jest jego lewe dziecko, a wierzchołkami poddrzewa, którego korzeniem jest jego prawe dziecko. Innymi słowy, lewe dzieci w tym porządku pojawiają się przed rodzicami, a prawe po nich. Tworzy się go algorytmem INORDER. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

61 Algorytm INORDER - część 1 INORDER(v) Dane: Skończone, uporządkowane drzewo binarne z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, u, w-węzły. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

62 Algorytm INORDER - część 1 INORDER(v) Dane: Skończone, uporządkowane drzewo binarne z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, u, w-węzły. I. Niech L(v) = (pusta lista). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

63 Algorytm INORDER - część 1 INORDER(v) Dane: Skończone, uporządkowane drzewo binarne z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, u, w-węzły. I. Niech L(v) = (pusta lista). II. Jeśli wierzchołek v ma lewe dziecko w, wykonaj: INORDER(w) {otrzymujemy w ten sposób listę L(w) złożoną z wierzchołka w i jego potomków}, a następnie dołącz otrzymaną listę L(w) na końcu listy L(v). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

64 Algorytm INORDER - część 1 INORDER(v) Dane: Skończone, uporządkowane drzewo binarne z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, u, w-węzły. I. Niech L(v) = (pusta lista). II. Jeśli wierzchołek v ma lewe dziecko w, wykonaj: INORDER(w) {otrzymujemy w ten sposób listę L(w) złożoną z wierzchołka w i jego potomków}, a następnie dołącz otrzymaną listę L(w) na końcu listy L(v). III. Dołącz v na koniec listy L(v). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

65 Algorytm INORDER - część 2 INORDER(v) Dane: Skończone, uporządkowane drzewo binarne z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, u, w-węzły. IV. Jeśli wierzchołek v ma prawe dziecko u, wykonaj: INORDER(u) {otrzymujemy w ten sposób listę L(u) złożoną z wierzchołka u i jego potomków}, a następnie dołącz otrzymaną listę L(u) na końcu listy L(v) Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

66 Algorytm INORDER - część 2 INORDER(v) Dane: Skończone, uporządkowane drzewo binarne z wyróżnionym korzeniem v. Zmienne: L(v) - lista wierzchołków drzewa, u, w-węzły. IV. Jeśli wierzchołek v ma prawe dziecko u, wykonaj: INORDER(u) {otrzymujemy w ten sposób listę L(u) złożoną z wierzchołka u i jego potomków}, a następnie dołącz otrzymaną listę L(u) na końcu listy L(v) Rezultat: L(v) - lista wierzchołków drzewa, na której lewe dzieci znajdują się przed rodzicami, a prawe - za nimi (czyli w porządku infiksowym). Warto zwrócić uwagę, że algorytm działa również jeśli niektórzy rodzice mają tylko jedno dziecko. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

67 INORDER - przykład Spróbujemy algorytmem INORDER infiksowo uporządkować powyższe drzewo. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

68 INORDER - przykład Spróbujemy algorytmem INORDER infiksowo uporządkować powyższe drzewo. Warto zauważyć, że komenda INORDER(x) oznacza w przekładzie na ludzki: uporządkuj infiksowo x i jego potomków. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

69 INORDER - przykład Zaczynamy od INORDER(A), co oznacza, że musimy wykonać INORDER(B), następnie dopisać A na końcu listy i dopiero potem INORDER (C). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

70 INORDER - przykład Wykonujemy INORDER(B), co oznacza, że mmusimy wykonać INORDER(D), następnie dopisać B na końcu listy i dopiero potem INORDER (E). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

71 INORDER - przykład Wykonujemy INORDER(D). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

72 INORDER - przykład Wykonujemy INORDER(D). D nie ma lewych dzieci, więc najpierw dopisujemy D na końcu listy, a potem wykonujemy INORDER(F ), Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

73 INORDER - przykład Wykonujemy INORDER(D). D nie ma lewych dzieci, więc najpierw dopisujemy D na końcu listy, a potem wykonujemy INORDER(F ), co polega na dopisaniu F na końcu listy, bo F nie ma dzieci. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

74 INORDER - przykład Kontynuujemy INORDER(B). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

75 INORDER - przykład Kontynuujemy INORDER(B). Skoro wykonaliśmy już INORDER(D), to teraz czas dopisać B na koniec listy i wykonać INORDER(E). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

76 INORDER - przykład Wykoujemy INORDER(E), co oznacza, że mmusimy wykonać INORDER(G), następnie dopisać E na końcu listy i dopiero potem INORDER (I ). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

77 INORDER - przykład Wykoujemy INORDER(E), co oznacza, że mmusimy wykonać INORDER(G), następnie dopisać E na końcu listy i dopiero potem INORDER (I ). Jako, że G i I nie mają dzieci, wykonanie INORDER(G) i INORDER(I ) sprowadza się do dopisania odpowiednio G i I na końcu listy. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

78 INORDER - przykład Wykoujemy INORDER(E), co oznacza, że mmusimy wykonać INORDER(G), następnie dopisać E na końcu listy i dopiero potem INORDER (I ). Jako, że G i I nie mają dzieci, wykonanie INORDER(G) i INORDER(I ) sprowadza się do dopisania odpowiednio G i I na końcu listy. Zatem INORDER(E) oznacza dopisanie na końcu listy: GEI. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

79 INORDER - przykład W ten sposób ukończyliśmy INORDER(B). Kolejny krok procedury INORDER(A) wymaga dopisania A na koniec listy i przejścia do wykonania INORDER(C), co zakończy cały algorytm. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

80 INORDER - przykład Wykonujemy INORDER(C). Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

81 INORDER - przykład Wykonujemy INORDER(C). Nie będziemy analizować tego szczegółowo. Analogicznie do poprzednich kroków, wynikiem INORDER(C) jest dopisanie na koniec listy: JCLKM. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

82 INORDER - wynik i interpretacja graficzna Algorytm INORDER prowadzi nas zatem do następującego uporządkowania wierzchołków drzewa: DFBGEIAJCLKM. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

83 INORDER - wynik i interpretacja graficzna Algorytm INORDER prowadzi nas zatem do następującego uporządkowania wierzchołków drzewa: DFBGEIAJCLKM. Ten ciąg można utworzyć przerysowując drzewo tak, by każdy kolejny poziom drzewa miał coraz krótsze krawędzie, by lewi potomkowie zawsze byli na lewo od przodka, a prawi potomkowie na prawo. Następnie wystarczy odczytać wierzchołki od lewej do prawej, ignorując ich wysokość. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

84 Algorytmy przechodzenia drzewa - uwagi rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

85 Algorytmy przechodzenia drzewa - uwagi Czas działania wszystkich trzech algorytmów przechodzenia drzewa to O( V ), gdzie V jest zbiorem wierzchołków drzewa. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

86 Algorytmy przechodzenia drzewa - uwagi Czas działania wszystkich trzech algorytmów przechodzenia drzewa to O( V ), gdzie V jest zbiorem wierzchołków drzewa. Z pewnych, za chwilę objaśnionych względów, algorytmy PREORDER i POSTORDER o wiele lepiej nadają się do komputerowego przechowywania danych niż INORDER. Jednak INORDER jest często stosowany w niekomputerowych zapisach (notacje algebraiczne). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

87 Dekodowanie drzew - wstęp Wiemy już, jak można zakodować drzewo z wyróżnionym korzeniem. Jednak, czy z odkodowaniem pójdzie tak łatwo? Czy możemy odtworzyć drzewo mając daną tylko kolejność wierzchołków i sposób zakodowania (prefiksowy, postfiksowy, infiksowy)? Na ogół odpowiedź jest przecząca. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

88 Dekodowanie PREORDER - przykład Wszystkie powyższe drzewa mają porządek prefiksowy ABCDE. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

89 Dekodowanie POSTORDER - przykład Wszystkie powyższe drzewa mają porządek postfiksowy ABCDE. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

90 Dekodowanie INORDER - przykład Wszystkie powyższe drzewa mają porządek infiksowy ABCDE. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

91 Dekodowanie INORDER - przykład Wszystkie powyższe drzewa mają porządek infiksowy ABCDE. Jaki zatem sens ma kodowanie drzewa, jeśli z postaci zakodowanej nie potrafimy tego drzewa odtworzyć? Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

92 Twierdzenie o dekodowaniu drzew Otóż, odtworzenie jest możliwe, pod warunkiem, że mamy dodatkowe dane, które musimy sobie zapewnić podczas kodowania. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

93 Twierdzenie o dekodowaniu drzew Otóż, odtworzenie jest możliwe, pod warunkiem, że mamy dodatkowe dane, które musimy sobie zapewnić podczas kodowania. Twierdzenie o dekodowaniu drzew Niech T będzie skończonym, uporządkowanym drzewem z wyróżnionym korzeniem, którego wierzchołki są wypisane w porządku prefiksowym lub postfiksowym. Załóżmy, że znana jest liczba dzieci każdego wierzchołka. Wtedy to drzewo jest wyznaczone jednoznacznie i może być odtworzone z ciągu wierzchołków. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

94 Twierdzenie o dekodowaniu drzew Otóż, odtworzenie jest możliwe, pod warunkiem, że mamy dodatkowe dane, które musimy sobie zapewnić podczas kodowania. Twierdzenie o dekodowaniu drzew Niech T będzie skończonym, uporządkowanym drzewem z wyróżnionym korzeniem, którego wierzchołki są wypisane w porządku prefiksowym lub postfiksowym. Załóżmy, że znana jest liczba dzieci każdego wierzchołka. Wtedy to drzewo jest wyznaczone jednoznacznie i może być odtworzone z ciągu wierzchołków. Niestety, nie da się uzyskać takiego wyniku dla porządku infiksowego dlatego jest on mniej używany w komputerowych strukturach danych. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

95 Twierdzenie o dekodowaniu drzew Otóż, odtworzenie jest możliwe, pod warunkiem, że mamy dodatkowe dane, które musimy sobie zapewnić podczas kodowania. Twierdzenie o dekodowaniu drzew Niech T będzie skończonym, uporządkowanym drzewem z wyróżnionym korzeniem, którego wierzchołki są wypisane w porządku prefiksowym lub postfiksowym. Załóżmy, że znana jest liczba dzieci każdego wierzchołka. Wtedy to drzewo jest wyznaczone jednoznacznie i może być odtworzone z ciągu wierzchołków. Niestety, nie da się uzyskać takiego wyniku dla porządku infiksowego dlatego jest on mniej używany w komputerowych strukturach danych. Natomiast dla porządków pre- i post-fiksowych, twierdzenie to jest konstruktywne, tj. pozwala na algorytmiczną konstrukcję zakodowanego drzewa, co wkrótce zobaczymy. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

96 Dekodowanie porządku infiksowego - kontrprzykład Dwa powyższe grafy nie tylko są kodowane w porządku infiksowym przez ABCDE, ale też ciąg dzieci każdego z wierzchołków w obydwu przypadkach można zapisać jako (0, 2, 0, 2, 0) (czyli 0 dzieci węzła A, 2 dzieci węzła B itd.). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

97 Dekodowanie porządku infiksowego - kontrprzykład Dwa powyższe grafy nie tylko są kodowane w porządku infiksowym przez ABCDE, ale też ciąg dzieci każdego z wierzchołków w obydwu przypadkach można zapisać jako (0, 2, 0, 2, 0) (czyli 0 dzieci węzła A, 2 dzieci węzła B itd.). Stąd wynika, że mając dany taki kod drzewa w porządku infiksowym i liczbę dzieci każdego węzła, nie jesteśmy w stanie odgadnąć, które z drzew reprezentuje podany kod. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

98 Dekodowanie porządku infiksowego - kontrprzykład Dwa powyższe grafy nie tylko są kodowane w porządku infiksowym przez ABCDE, ale też ciąg dzieci każdego z wierzchołków w obydwu przypadkach można zapisać jako (0, 2, 0, 2, 0) (czyli 0 dzieci węzła A, 2 dzieci węzła B itd.). Stąd wynika, że mając dany taki kod drzewa w porządku infiksowym i liczbę dzieci każdego węzła, nie jesteśmy w stanie odgadnąć, które z drzew reprezentuje podany kod. Dlatego twierdzenie o dekodowaniu drzew dla porządku infiksowego byłoby nieprawdziwe. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

99 Algorytm DEPRE Poniżej algorytm odzyskiwania drzewa z jego porządku prefiksowego (z zadaną liczbą dzieci każdego węzła). DEPRE(v 1,... v n, c 1,... c n ) Dane: v 1,... v n - ciąg wierzchołków drzewa T w porządku prefiksowym, c 1,... c n - ciąg liczb dzieci tych wierzchołków. Zmienne: i, j - liczniki pętli wierzchołków. S(v i ) - zbiory wierzchołków, U(v i ) - liczby całkowite. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

100 Algorytm DEPRE Poniżej algorytm odzyskiwania drzewa z jego porządku prefiksowego (z zadaną liczbą dzieci każdego węzła). DEPRE(v 1,... v n, c 1,... c n ) Dane: v 1,... v n - ciąg wierzchołków drzewa T w porządku prefiksowym, c 1,... c n - ciąg liczb dzieci tych wierzchołków. Zmienne: i, j - liczniki pętli wierzchołków. S(v i ) - zbiory wierzchołków, U(v i ) - liczby całkowite. I. Dla każdego i podstawiamy U(v i ) := c i, S(v i ) =. Następnie i := 2. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

101 Algorytm DEPRE Poniżej algorytm odzyskiwania drzewa z jego porządku prefiksowego (z zadaną liczbą dzieci każdego węzła). DEPRE(v 1,... v n, c 1,... c n ) Dane: v 1,... v n - ciąg wierzchołków drzewa T w porządku prefiksowym, c 1,... c n - ciąg liczb dzieci tych wierzchołków. Zmienne: i, j - liczniki pętli wierzchołków. S(v i ) - zbiory wierzchołków, U(v i ) - liczby całkowite. I. Dla każdego i podstawiamy U(v i ) := c i, S(v i ) =. Następnie i := 2. II. Dopóki i n wykonujemy: Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

102 Algorytm DEPRE Poniżej algorytm odzyskiwania drzewa z jego porządku prefiksowego (z zadaną liczbą dzieci każdego węzła). DEPRE(v 1,... v n, c 1,... c n ) Dane: v 1,... v n - ciąg wierzchołków drzewa T w porządku prefiksowym, c 1,... c n - ciąg liczb dzieci tych wierzchołków. Zmienne: i, j - liczniki pętli wierzchołków. S(v i ) - zbiory wierzchołków, U(v i ) - liczby całkowite. I. Dla każdego i podstawiamy U(v i ) := c i, S(v i ) =. Następnie i := 2. II. Dopóki i n wykonujemy: Znajdujemy maksymalne możliwe j < i, takie, że U(v j ) 0. Wtedy U(v j ) := U(v j ) 1, S(v j ) := S(v j ) {v i }, i := i + 1. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

103 Algorytm DEPRE Poniżej algorytm odzyskiwania drzewa z jego porządku prefiksowego (z zadaną liczbą dzieci każdego węzła). DEPRE(v 1,... v n, c 1,... c n ) Dane: v 1,... v n - ciąg wierzchołków drzewa T w porządku prefiksowym, c 1,... c n - ciąg liczb dzieci tych wierzchołków. Zmienne: i, j - liczniki pętli wierzchołków. S(v i ) - zbiory wierzchołków, U(v i ) - liczby całkowite. I. Dla każdego i podstawiamy U(v i ) := c i, S(v i ) =. Następnie i := 2. II. Dopóki i n wykonujemy: Znajdujemy maksymalne możliwe j < i, takie, że U(v j ) 0. Wtedy U(v j ) := U(v j ) 1, S(v j ) := S(v j ) {v i }, i := i + 1. Rezultat: S(v i ) - ciąg zbiorów, zawierających wierzchołki będące dziećmi kolejnych węzłów v i. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

104 DEPRE - uwagi Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

105 DEPRE - uwagi S(v i ) to zbiór dzieci węzła v i. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

106 DEPRE - uwagi S(v i ) to zbiór dzieci węzła v i. Jeśli znamy zbiory dzieci wszystkich węzłów, to znamy też wszystkie połączenia między węzłami, więc potrafimy odtworzyć całe drzewo. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

107 DEPRE - uwagi S(v i ) to zbiór dzieci węzła v i. Jeśli znamy zbiory dzieci wszystkich węzłów, to znamy też wszystkie połączenia między węzłami, więc potrafimy odtworzyć całe drzewo. Algorytm DEPRE stworzy CO NAJWYŻEJ jedno drzewo. W szczególności, może się okazać, że dane, którymi go nakarmiliśmy nie są spełnione przez żadne drzewo. Przykładowo, żaden ciąg (c 1,... c n ) taki, że c n 0 nie może być ciągiem dzieci wierzchołków drzewa uporządkowanych prefiksowo, bo n-ty wierzchołek w tym porządku jest liściem, więc nie może mieć dzieci (które musiałyby się pojawić po swoim rodzicu) Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

108 DEPRE - uwagi S(v i ) to zbiór dzieci węzła v i. Jeśli znamy zbiory dzieci wszystkich węzłów, to znamy też wszystkie połączenia między węzłami, więc potrafimy odtworzyć całe drzewo. Algorytm DEPRE stworzy CO NAJWYŻEJ jedno drzewo. W szczególności, może się okazać, że dane, którymi go nakarmiliśmy nie są spełnione przez żadne drzewo. Przykładowo, żaden ciąg (c 1,... c n ) taki, że c n 0 nie może być ciągiem dzieci wierzchołków drzewa uporządkowanych prefiksowo, bo n-ty wierzchołek w tym porządku jest liściem, więc nie może mieć dzieci (które musiałyby się pojawić po swoim rodzicu) Podobnie, jeśli n > 1, to musi być c 1 0, bo pierwszym węzłem na liście uporządkowanej prefiksowo musi być korzeń, który musi mieć dzieci (chyba, że to jest drzewo o jednym wierzchołku). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

109 DEPRE - przykład Przeanalizujemy działanie algorytmu DEPRE na przykładzie listy wierzchołków ABDIEFJCGH i ciągu przypisanych im dzieci: (2, 3, 1, 0, 0, 1, 0, 2, 0, 0). Wyniki będziemy zapisywać w takiej tabelce: v k A B D I E F J C G H U(v k ) S(v k ) Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

110 DEPRE - przykład W pierwszym kroku, wpisujemy do tabelki c i w miejsce U(v i ), oraz w miejsce S(v i ). v k A B D I E F J C G H U(v k ) S(v k ) Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

111 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

112 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) Wierzchołek A, jako początek listy prefiksowej, jest oczywiście korzeniem drzewa, więc nie szukamy mu rodzica. Szukanie rodziców zaczynamy od wierzchołka B (i = 2). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

113 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) Wierzchołek A, jako początek listy prefiksowej, jest oczywiście korzeniem drzewa, więc nie szukamy mu rodzica. Szukanie rodziców zaczynamy od wierzchołka B (i = 2). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

114 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) Wierzchołek A, jako początek listy prefiksowej, jest oczywiście korzeniem drzewa, więc nie szukamy mu rodzica. Szukanie rodziców zaczynamy od wierzchołka B (i = 2). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim A. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

115 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) Wierzchołek A, jako początek listy prefiksowej, jest oczywiście korzeniem drzewa, więc nie szukamy mu rodzica. Szukanie rodziców zaczynamy od wierzchołka B (i = 2). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim A. Zatem podstawiamy U(A) := 2 1 = 1 i S(A) = {B} = {B} rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

116 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

117 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B Przechodzimy do wierzchołka D (i = 3). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

118 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B Przechodzimy do wierzchołka D (i = 3). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

119 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B Przechodzimy do wierzchołka D (i = 3). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim B. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

120 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B Przechodzimy do wierzchołka D (i = 3). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim B. Zatem podstawiamy U(B) := 3 1 = 2 i S(B) = {D} = {D} Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

121 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

122 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D Przechodzimy do wierzchołka I (i = 4). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

123 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D Przechodzimy do wierzchołka I (i = 4). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

124 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D Przechodzimy do wierzchołka I (i = 4). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim D. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

125 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D Przechodzimy do wierzchołka I (i = 4). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim D. Zatem podstawiamy U(D) := 1 1 = 0 i S(D) = {I } = {I } Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

126 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D I rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

127 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D I Przechodzimy do wierzchołka E (i = 5). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

128 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D I Przechodzimy do wierzchołka E (i = 5). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

129 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D I Przechodzimy do wierzchołka E (i = 5). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim B. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

130 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B D I Przechodzimy do wierzchołka E (i = 5). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim B. Zatem podstawiamy U(B) := 2 1 = 1 i S(B) = {D} {E} = {D, E} Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

131 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B DE I rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

132 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B DE I Przechodzimy do wierzchołka F (i = 6). rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

133 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B DE I Przechodzimy do wierzchołka F (i = 6). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

134 DEPRE - przykład v k A B D I E F J C G H U(v k ) S(v k ) B DE I Przechodzimy do wierzchołka F (i = 6). Szukamy poprzedniego wierzchołka na liście, dla którego U 0. W tym przypadku jest nim B. Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i dekodowanie zima 2016/ / 74

Matematyka dyskretna - 7.Drzewa

Matematyka dyskretna - 7.Drzewa Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja

Bardziej szczegółowo

7. Teoria drzew - spinanie i przeszukiwanie

7. Teoria drzew - spinanie i przeszukiwanie 7. Teoria drzew - spinanie i przeszukiwanie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie

Bardziej szczegółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących

Bardziej szczegółowo

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel Wstęp do programowania Drzewa Piotr Chrząstowski-Wachtel Drzewa Drzewa definiują matematycy, jako spójne nieskierowane grafy bez cykli. Równoważne określenia: Spójne grafy o n wierzchołkach i n-1 krawędziach

Bardziej szczegółowo

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wykład 2. Drzewa zbalansowane AVL i 2-3-4 Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania

Bardziej szczegółowo

0-0000, 1-0001, 2-0010, 3-0011 itd... 9-1001.

0-0000, 1-0001, 2-0010, 3-0011 itd... 9-1001. KODOWANIE Jednym z problemów, z którymi spotykamy się w informatyce, jest problem właściwego wykorzystania pamięci. Konstruując algorytm staramy się zwykle nie tylko o zminimalizowanie kosztów czasowych

Bardziej szczegółowo

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel Wstęp do programowania Drzewa podstawowe techniki Piotr Chrząstowski-Wachtel Drzewa wyszukiwań Drzewa często służą do przechowywania informacji. Jeśli uda sie nam stworzyć drzewo o niewielkiej wysokości

Bardziej szczegółowo

Listy, kolejki, stosy

Listy, kolejki, stosy Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:

Bardziej szczegółowo

Odwrotna Notacja Polska

Odwrotna Notacja Polska Odwrotna Notacja Polska Odwrotna Notacja Polska w skrócie ONP) jest sposobem zapisu wyrażeń arytmetycznych. Znak wykonywanej operacji umieszczany jest po operandach, argumentach tzw. zapis postfiksowy).

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie

Bardziej szczegółowo

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru. Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

3. Macierze i Układy Równań Liniowych

3. Macierze i Układy Równań Liniowych 3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x

Bardziej szczegółowo

Drzewa podstawowe poj

Drzewa podstawowe poj Drzewa podstawowe poj ecia drzewo graf reprezentujacy regularna strukture wskaźnikowa, gdzie każdy element zawiera dwa lub wiecej wskaźników (ponumerowanych) do takich samych elementów; wez ly (albo wierzcho

Bardziej szczegółowo

5c. Sieci i przepływy

5c. Sieci i przepływy 5c. Sieci i przepływy Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 5c. Sieci i przepływy zima 2016/2017 1 / 40 1 Definicje

Bardziej szczegółowo

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste. Drzewa binarne Każdy węzeł w drzewie posiada pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste. Uporządkowanie. Zakładamy, że klucze są różne. Klucze leżące

Bardziej szczegółowo

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa. Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna

Bardziej szczegółowo

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne: Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane

Bardziej szczegółowo

Porządek symetryczny: right(x)

Porządek symetryczny: right(x) Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)

Bardziej szczegółowo

dr inż. Paweł Myszkowski Wykład nr 11 ( )

dr inż. Paweł Myszkowski Wykład nr 11 ( ) dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:

Bardziej szczegółowo

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Wykład 4. Określimy teraz pewną ważną klasę pierścieni. Wykład 4 Określimy teraz pewną ważną klasę pierścieni. Twierdzenie 1 Niech m, n Z. Jeśli n > 0 to istnieje dokładnie jedna para licz q, r, że: m = qn + r, 0 r < n. Liczbę r nazywamy resztą z dzielenia

Bardziej szczegółowo

Ogólne wiadomości o drzewach

Ogólne wiadomości o drzewach Ogólne wiadomości o drzewach Algorytmy i struktury danych Wykład 4. Rok akademicki: 2010/2011 Drzewo jako struktura danych Drzewo kolekcja elementów pozostających w zależności hierarchicznej, posiadająca

Bardziej szczegółowo

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne Załóżmy, że mamy źródło S, które generuje symbole ze zbioru S={x, x 2,..., x N } z prawdopodobieństwem P={p, p 2,..., p N }, symbolom tym odpowiadają kody P={c, c 2,..., c N }. fektywność danego sposobu

Bardziej szczegółowo

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST) Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie

Bardziej szczegółowo

Temat: Algorytm kompresji plików metodą Huffmana

Temat: Algorytm kompresji plików metodą Huffmana Temat: Algorytm kompresji plików metodą Huffmana. Wymagania dotyczące kompresji danych Przez M oznaczmy zbiór wszystkich możliwych symboli występujących w pliku (alfabet pliku). Przykład M = 2, gdy plik

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Przedmiot fakultatywny 20h wykładu + 20h ćwiczeń 21 lutego 2014 Zasady zaliczenia 1 ćwiczenia (ocena): kolokwium, zadania programistyczne (implementacje algorytmów), praca na ćwiczeniach. 2 Wykład (egzamin)

Bardziej szczegółowo

Wykład 8. Drzewa AVL i 2-3-4

Wykład 8. Drzewa AVL i 2-3-4 Wykład 8 Drzewa AVL i 2-3-4 1 Drzewa AVL Ø Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Ø Drzewa 2-3-4 Definicja drzewa 2-3-4 Operacje wstawiania i usuwania Złożoność

Bardziej szczegółowo

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych 1 Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych Alexander Denisjuk Prywatna Wyższa Szkoła Zawodowa w Giżycku

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie

Bardziej szczegółowo

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych Arytmetyka liczb całkowitych Wykład 1 Na początku zajmować się będziemy zbiorem liczb całkowitych Z = {0, ±1, ±2,...}. Zakładamy, że czytelnik zna relację

Bardziej szczegółowo

Drzewo binarne BST. LABORKA Piotr Ciskowski

Drzewo binarne BST. LABORKA Piotr Ciskowski Drzewo binarne BST LABORKA Piotr Ciskowski zadanie 1. drzewo binarne - 1 Zaimplementuj drzewo binarne w postaci: klasy Osoba przechowującej prywatne zmienne: liczbę całkowitą to będzie klucz, wg którego

Bardziej szczegółowo

Nierówność Krafta-McMillana, Kodowanie Huffmana

Nierówność Krafta-McMillana, Kodowanie Huffmana Nierówność Krafta-McMillana, Kodowanie Huffmana Kodowanie i kompresja informacji - Wykład 2 1 marca 2010 Test na jednoznaczna dekodowalność Kod a jest prefiksem kodu b jeśli b jest postaci ax. x nazywamy

Bardziej szczegółowo

wagi cyfry 7 5 8 2 pozycje 3 2 1 0

wagi cyfry 7 5 8 2 pozycje 3 2 1 0 Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień

Bardziej szczegółowo

Kompresja bezstratna. Entropia. Kod Huffmana

Kompresja bezstratna. Entropia. Kod Huffmana Kompresja bezstratna. Entropia. Kod Huffmana Kodowanie i bezpieczeństwo informacji - Wykład 10 29 kwietnia 2013 Teoria informacji Jeśli P(A) jest prawdopodobieństwem wystapienia informacji A to niech i(a)

Bardziej szczegółowo

Wykład 6. Drzewa poszukiwań binarnych (BST)

Wykład 6. Drzewa poszukiwań binarnych (BST) Wykład 6 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST

Bardziej szczegółowo

Systemy liczbowe używane w technice komputerowej

Systemy liczbowe używane w technice komputerowej Systemy liczbowe używane w technice komputerowej Systemem liczenia nazywa się sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach.

Bardziej szczegółowo

Matematyka dyskretna

Matematyka dyskretna Matematyka dyskretna Wykład 13: Teoria Grafów Gniewomir Sarbicki Literatura R.J. Wilson Wprowadzenie do teorii grafów Definicja: Grafem (skończonym, nieskierowanym) G nazywamy parę zbiorów (V (G), E(G)),

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 6a Model danych oparty na drzewach 1 Model danych oparty na drzewach Istnieje wiele sytuacji w których przetwarzane informacje mają strukturę hierarchiczną lub zagnieżdżoną,

Bardziej szczegółowo

Drzewa poszukiwań binarnych

Drzewa poszukiwań binarnych 1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie

Bardziej szczegółowo

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np. Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa

Bardziej szczegółowo

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10. ZAMIANA LICZB MIĘDZY SYSTEMAMI DWÓJKOWYM I DZIESIĘTNYM Aby zamienić liczbę z systemu dwójkowego (binarnego) na dziesiętny (decymalny) należy najpierw przypomnieć sobie jak są tworzone liczby w ww systemach

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH ALGORYTMY I STRUKTURY DANYCH Temat 4: Realizacje dynamicznych struktur danych. Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/

Bardziej szczegółowo

6a. Grafy eulerowskie i hamiltonowskie

6a. Grafy eulerowskie i hamiltonowskie 6a. Grafy eulerowskie i hamiltonowskie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny6a. w Krakowie) Grafy eulerowskie i hamiltonowskie

Bardziej szczegółowo

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Funkcja kwadratowa. f(x) = ax 2 + bx + c, Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax 2 + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax 2, a R \

Bardziej szczegółowo

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

Niech x 1,..., x n będzie ciągiem zdarzeń. --- Matematyczne podstawy kryptografii, Ćw2 TEMAT 7: Teoria Shannona. Kody Huffmana, entropia. BIBLIOGRAFIA: [] Cz. Bagiński, cez.wipb.pl, [2] T. H. Cormen, C. E. Leiserson, R. L Rivest, Wprowadzenie do algorytmów,

Bardziej szczegółowo

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym

Bardziej szczegółowo

Rekurencja. Przykład. Rozważmy ciąg

Rekurencja. Przykład. Rozważmy ciąg Rekurencja Definicje rekurencyjne Definicja: Mówimy, iż ciąg jest zdefiniowany rekurencyjnie, jeżeli: (P) Określony jest pewien skończony zbiór wyrazów tego ciągu, zwykle jest to pierwszy wyraz tego ciągu

Bardziej szczegółowo

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0, 2 Arytmetyka Niech b = d r d r 1 d 1 d 0 będzie zapisem liczby w systemie dwójkowym Zamiana zapisu liczby b na system dziesiętny odbywa się poprzez wykonanie dodawania d r 2 r + d r 1 2 r 1 d 1 2 1 + d

Bardziej szczegółowo

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może

Bardziej szczegółowo

LOGIKA I TEORIA ZBIORÓW

LOGIKA I TEORIA ZBIORÓW LOGIKA I TEORIA ZBIORÓW Logika Logika jest nauką zajmującą się zdaniami Z punktu widzenia logiki istotne jest, czy dane zdanie jest prawdziwe, czy nie Nie jest natomiast istotne o czym to zdanie mówi Definicja

Bardziej szczegółowo

Lista liniowa dwukierunkowa

Lista liniowa dwukierunkowa 53 Lista liniowa dwukierunkowa Jest to lista złożona z elementów, z których każdy posiada, oprócz wskaźnika na element następny, również wskaźnik na element poprzedni. Zdefiniujmy element listy dwukierunkowej

Bardziej szczegółowo

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F KODY SYMBOLI Kod Shannona-Fano KODOWANIE DANYCH, A.Przelaskowski Metoda S-F Kod Huffmana Adaptacyjne drzewo Huffmana Problemy implementacji Kod Golomba Podsumowanie Kod drzewa binarnego Na wejściu rozkład:

Bardziej szczegółowo

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax, a R \ {0}.

Bardziej szczegółowo

Wykład 2. Drzewa poszukiwań binarnych (BST)

Wykład 2. Drzewa poszukiwań binarnych (BST) Wykład 2 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST

Bardziej szczegółowo

2a. Przeciętna stopa zwrotu

2a. Przeciętna stopa zwrotu 2a. Przeciętna stopa zwrotu Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie Matematyka finansowa rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 2a. Przeciętna stopa zwrotu Matematyka

Bardziej szczegółowo

Problemy Decyzyjne dla Systemów Nieskończonych

Problemy Decyzyjne dla Systemów Nieskończonych Problemy Decyzyjne dla Systemów Nieskończonych Ćwiczenia 1 17 lutego 2012 Na tych ćwiczeniach zajmiemy się pojęciem well quasi-ordering (WQO) bardzo przydatnym do analizy nieskończonych ciągów. Definicja

Bardziej szczegółowo

Matematyka dyskretna dla informatyków

Matematyka dyskretna dla informatyków Matematyka dyskretna dla informatyków Część I: Elementy kombinatoryki Jerzy Jaworski Zbigniew Palka Jerzy Szymański Uniwersytet im. Adama Mickiewicza Poznań 2007 4 Zależności rekurencyjne Wiele zależności

Bardziej szczegółowo

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 = Systemy liczbowe Dla każdej liczby naturalnej x Î N oraz liczby naturalnej p >= 2 istnieją jednoznacznie wyznaczone: liczba n Î N oraz ciąg cyfr c 0, c 1,..., c n-1 (gdzie ck Î {0, 1,..., p - 1}) taki,

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH ALGORYTMY I STRUKTURY DANYCH Temat : Drzewa zrównoważone, sortowanie drzewiaste Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/

Bardziej szczegółowo

. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016

. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016 .. Podstawy Programowania 2 Drzewa bst - część pierwsza Arkadiusz Chrobot Zakład Informatyki 22 maja 2016 1 / 55 Plan.1 Wstęp.2 Definicje.3 Implementacja Typ bazowy i wskaźnik na korzeń Dodawanie elementu

Bardziej szczegółowo

Łyżwy - omówienie zadania

Łyżwy - omówienie zadania Komisja Regulaminowa XVI Olimpiady Informatycznej 1 UMK Toruń 12 luty 2009 1 Niniejsza prezentacja zawiera materiały dostarczone przez Komitet Główny Olimpiady Informatycznej. Treść zadania Wejście Wyjście

Bardziej szczegółowo

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004 4 marca 2004 Podstawowe oznaczenia i definicje Wymagania wobec kodu Podstawowa idea Podsumowanie Podstawowe oznaczenia i definicje Podstawowe oznaczenia i definicje: alfabet wejściowy: A = {a 1, a 2,...,

Bardziej szczegółowo

1 Automaty niedeterministyczne

1 Automaty niedeterministyczne Szymon Toruńczyk 1 Automaty niedeterministyczne Automat niedeterministyczny A jest wyznaczony przez następujące składniki: Alfabet skończony A Zbiór stanów Q Zbiór stanów początkowych Q I Zbiór stanów

Bardziej szczegółowo

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów Wykład 2. Reprezentacja komputerowa grafów 1 / 69 Macierz incydencji Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach (x 1, x 2,..., x n) i m krawędziach (e 1, e 2,..., e m). 2 / 69

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Gramatyki bezkontekstowe I Gramatyką bezkontekstową

Bardziej szczegółowo

Kody splotowe. Zastosowanie

Kody splotowe. Zastosowanie Kody splotowe Zastosowanie Niekiedy potrzeba buforowania fragmentu wiadomości przed zakodowaniem, tak jak to ma miejsce w koderze blokowym, jest przeszkodą, gdyż dane do zakodowania napływają strumieniem.

Bardziej szczegółowo

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski Algorytmy i struktury danych Wykład 5: Drzewa Dr inż. Paweł Kasprowski pawel@kasprowski.pl Drzewa Struktury przechowywania danych podobne do list ale z innymi zasadami wskazywania następników Szczególny

Bardziej szczegółowo

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność

Bardziej szczegółowo

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe ARCHITEKTURA KOMPUTERÓW Systemy liczbowe 20.10.2010 System Zakres znaków Przykład zapisu Dziesiętny ( DEC ) 0,1,2,3, 4,5,6,7,8,9 255 DEC Dwójkowy / Binarny ( BIN ) 0,1 11111 Ósemkowy ( OCT ) 0,1,2,3, 4,5,6,7

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 1 / 24 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych Instytut Automatyki i Robotyki Warszawa, 2015 Kody liczb całkowitych nieujemnych Kody liczbowe dzielimy na analityczne nieanalityczne (symboliczne)

Bardziej szczegółowo

domykanie relacji, relacja równoważności, rozkłady zbiorów

domykanie relacji, relacja równoważności, rozkłady zbiorów 1 of 8 2012-03-28 17:45 Logika i teoria mnogości/wykład 5: Para uporządkowana iloczyn kartezjański relacje domykanie relacji relacja równoważności rozkłady zbiorów From Studia Informatyczne < Logika i

Bardziej szczegółowo

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na

Bardziej szczegółowo

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp

Bardziej szczegółowo

Podstawy Informatyki. Metody dostępu do danych

Podstawy Informatyki. Metody dostępu do danych Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie

Bardziej szczegółowo

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2016 1 / 8 Plan Wstęp Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz Zmiany w funkcji main()

Bardziej szczegółowo

Zadanie 3 Oblicz jeżeli wiadomo, że liczby 8 2,, 1, , tworzą ciąg arytmetyczny. Wyznacz różnicę ciągu. Rozwiązanie:

Zadanie 3 Oblicz jeżeli wiadomo, że liczby 8 2,, 1, , tworzą ciąg arytmetyczny. Wyznacz różnicę ciągu. Rozwiązanie: Zadanie 3 Oblicz jeżeli wiadomo, że liczby 8 2,, 1, 6 11 6 11, tworzą ciąg arytmetyczny. Wyznacz różnicę ciągu. Uprośćmy najpierw liczby dane w treści zadania: 8 2, 2 2 2 2 2 2 6 11 6 11 6 11 26 11 6 11

Bardziej szczegółowo

Drzewa czerwono-czarne.

Drzewa czerwono-czarne. Binboy at Sphere http://binboy.sphere.p l Drzewa czerwono-czarne. Autor: Jacek Zacharek Wstęp. Pojęcie drzewa czerwono-czarnego (red-black tree) zapoczątkował Rudolf Bayer w książce z 1972 r. pt. Symmetric

Bardziej szczegółowo

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN): 1. SYSTEMY LICZBOWE UŻYWANE W TECHNICE KOMPUTEROWEJ System liczenia - sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach. Do zapisu

Bardziej szczegółowo

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

dodatkowe operacje dla kopca binarnego: typu min oraz typu max: ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu

Bardziej szczegółowo

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325 PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj

Bardziej szczegółowo

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Używane struktury danych: V - zbiór wierzchołków grafu, V = {1,2,3...,n} E - zbiór krawędzi grafu, E = {(i,j),...}, gdzie i, j Î V i istnieje

Bardziej szczegółowo

Struktury Danych i Złożoność Obliczeniowa

Struktury Danych i Złożoność Obliczeniowa Struktury Danych i Złożoność Obliczeniowa Zajęcia 3 Struktury drzewiaste drzewo binarne szczególny przypadek drzewa, które jest szczególnym przypadkiem grafu skierowanego, stopień każdego wierzchołka jest

Bardziej szczegółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. 1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie

Bardziej szczegółowo

Języki formalne i automaty Ćwiczenia 4

Języki formalne i automaty Ćwiczenia 4 Języki formalne i automaty Ćwiczenia 4 Autor: Marcin Orchel Spis treści Spis treści... 1 Wstęp teoretyczny... 2 Sposób tworzenia deterministycznego automatu skończonego... 4 Intuicyjne rozumienie konstrukcji

Bardziej szczegółowo

Zaawansowane metody numeryczne

Zaawansowane metody numeryczne Wykład 10 Rozkład LU i rozwiązywanie układów równań liniowych Niech będzie dany układ równań liniowych postaci Ax = b Załóżmy, że istnieją macierze L (trójkątna dolna) i U (trójkątna górna), takie że macierz

Bardziej szczegółowo

Regionalne Koło Matematyczne

Regionalne Koło Matematyczne Regionalne Koło Matematyczne Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki http://www.mat.umk.pl/rkm/ Lista rozwiązań zadań nr 16 (27.02.2010) Twierdzenia evy i Menelaosa 1.

Bardziej szczegółowo

Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów:

Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów: Jednym z najprostszych sposobów porządkowania jest technika stosowana przy sortowaniu listów: Listy rozkładane są do różnych przegródek. O tym, do której z nich trafi koperta, decydują różne fragmenty

Bardziej szczegółowo

Przykładami ciągów, które Czytelnik dobrze zna (a jeśli nie, to niniejszym poznaje), jest ciąg arytmetyczny:

Przykładami ciągów, które Czytelnik dobrze zna (a jeśli nie, to niniejszym poznaje), jest ciąg arytmetyczny: Podstawowe definicje Definicja ciągu Ciągiem nazywamy funkcję na zbiorze liczb naturalnych, tzn. przyporządkowanie każdej liczbie naturalnej jakiejś liczby rzeczywistej. (Mówimy wtedy o ciągu o wyrazach

Bardziej szczegółowo

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie Opracował: dr hab. inż. Jan Magott KATEDRA INFORMATYKI TECHNICZNEJ Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych ćwiczenie 207 Temat: Automaty Moore'a i Mealy 1. Cel ćwiczenia Celem ćwiczenia jest

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 6b: Model danych oparty na drzewach http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Model danych oparty na drzewach

Bardziej szczegółowo

EGZAMIN MATURALNY Z INFORMATYKI

EGZAMIN MATURALNY Z INFORMATYKI Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. MIN 2016 KOD UZUPEŁNIA ZDAJĄCY PESEL miejsce na naklejkę EGZAMIN MATURALNY Z INFORMATYKI POZIOM ROZSZERZONY CZĘŚĆ I DATA: 17

Bardziej szczegółowo

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów Treść wykładu Pierścienie wielomianów. Definicja Niech P będzie pierścieniem. Wielomianem jednej zmiennej o współczynnikach z P nazywamy każdy ciąg f = (f 0, f 1, f 2,...), gdzie wyrazy ciągu f są prawie

Bardziej szczegółowo

7. CIĄGI. WYKŁAD 5. Przykłady :

7. CIĄGI. WYKŁAD 5. Przykłady : WYKŁAD 5 1 7. CIĄGI. CIĄGIEM NIESKOŃCZONYM nazywamy funkcję określoną na zbiorze liczb naturalnych, dodatnich, a wyrazami ciągu są wartości tej funkcji. CIĄGIEM SKOŃCZONYM nazywamy funkcję określoną na

Bardziej szczegółowo

Abstrakcyjne struktury danych - stos, lista, drzewo

Abstrakcyjne struktury danych - stos, lista, drzewo Sprawozdanie Podstawy Informatyki Laboratoria Abstrakcyjne struktury danych - stos, lista, drzewo Maciej Tarkowski maciek@akom.pl grupa VII 1/8 1. Stos Stos (ang. Stack) jest podstawową liniową strukturą

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo