7a. Teoria drzew - kodowanie i dekodowanie

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

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107 Drzewo Definicja. Drzewo to graf acykliczny

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

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

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

Metody Kompilacji Wykład 3

Metody Kompilacji Wykład 3 Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy

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

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

Wysokość drzewa Głębokość węzła

Wysokość drzewa Głębokość węzła Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

Bardziej szczegółowo

Instrukcje dla zawodników

Instrukcje dla zawodników Instrukcje dla zawodników Nie otwieraj arkusza z zadaniami dopóki nie zostaniesz o to poproszony. Instrukcje poniżej zostaną ci odczytane i wyjaśnione. 1. Arkusz składa się z 3 zadań. 2. Każde zadanie

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

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

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

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

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew Drzewa Las - graf, który nie zawiera cykli Drzewo - las spójny Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew Niech T graf o n wierzchołkach będący

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

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

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

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

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

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

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

Metoda Tablic Semantycznych

Metoda Tablic Semantycznych Procedura Plan Reguły Algorytm Logika obliczeniowa Instytut Informatyki Plan Procedura Reguły 1 Procedura decyzyjna Logiczna równoważność formuł Logiczna konsekwencja Procedura decyzyjna 2 Reguły α, β,

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

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

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

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

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

2. Układy równań liniowych

2. Układy równań liniowych 2. Układy równań liniowych Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2017/2018 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 2. Układy równań liniowych zima 2017/2018 1 /

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

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

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

Sortowanie - wybrane algorytmy

Sortowanie - wybrane algorytmy Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe

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

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Matematyka dyskretna. Andrzej Łachwa, UJ, /10 Matematyka dyskretna Andrzej Łachwa, UJ, 2018 andrzej.lachwa@uj.edu.pl 10/10 Podziały i liczby Stirlinga Liczba Stirlinga dla cykli (często nazywana liczbą Stirlinga pierwszego rodzaju) to liczba permutacji

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

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

Podstawy Informatyki. Wykład 6. Struktury danych

Podstawy Informatyki. Wykład 6. Struktury danych Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą

Bardziej szczegółowo

5. Całka nieoznaczona

5. Całka nieoznaczona 5. Całka nieoznaczona Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2017/2018 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 5. Całka nieoznaczona zima 2017/2018 1 / 31 Całka nieoznaczona

Bardziej szczegółowo

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10). Wprowadzenie do inżynierii przetwarzania informacji. Ćwiczenie 1. Systemy liczbowe Cel dydaktyczny: Poznanie zasad reprezentacji liczb w systemach pozycyjnych o różnych podstawach. Kodowanie liczb dziesiętnych

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

Lista 0. Kamil Matuszewski 1 marca 2016

Lista 0. Kamil Matuszewski 1 marca 2016 Lista 0 Kamil Matuszewski marca 206 2 3 4 5 6 7 8 0 0 Zadanie 4 Udowodnić poprawność mnożenia po rosyjsku Zastanówmy się co robi nasz algorytm Mamy podane liczby n i m W każdym kroku liczbę n dzielimy

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

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa

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

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

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

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 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

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

6. Całka nieoznaczona

6. Całka nieoznaczona 6. Całka nieoznaczona Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 6. Całka nieoznaczona 1 / 35 Całka nieoznaczona - motywacja Wiemy

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

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

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

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

8. Funkcje wielu zmiennych - pochodne cząstkowe

8. Funkcje wielu zmiennych - pochodne cząstkowe 8. Funkcje wielu zmiennych - pochodne cząstkowe Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie lato 2015/2016 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 8. Funkcje w Krakowie) wielu zmiennych

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

13. Równania różniczkowe - portrety fazowe

13. Równania różniczkowe - portrety fazowe 13. Równania różniczkowe - portrety fazowe Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie rzegorz Kosiorowski (Uniwersytet Ekonomiczny 13. wrównania Krakowie) różniczkowe - portrety fazowe 1 /

Bardziej szczegółowo

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego. Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego

Bardziej szczegółowo

UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA. pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński

UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA. pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński kierunek: Informatyka GDAŃSK 2019 Niniejsze materiały powstały

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

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

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

Analiza semantyczna. Gramatyka atrybutywna

Analiza semantyczna. Gramatyka atrybutywna Analiza semantyczna Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji na temat składni języka podlegającego tłumaczeniu, translator musi posiadać możliwość korzystania z wielu innych informacji

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

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

Wykłady z Matematyki Dyskretnej

Wykłady z Matematyki Dyskretnej Wykłady z Matematyki Dyskretnej dla kierunku Informatyka dr Instytut Informatyki Politechnika Krakowska Wykłady na bazie materiałów: dra hab. Andrzeja Karafiata dr hab. Joanny Kołodziej, prof. PK Grafy

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

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

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych

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

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Metody teorii gier ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Metody teorii gier Cel: Wyprowadzenie oszacowania dolnego na oczekiwany czas działania dowolnego algorytmu losowego dla danego problemu.

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

Spacery losowe generowanie realizacji procesu losowego

Spacery losowe generowanie realizacji procesu losowego Spacery losowe generowanie realizacji procesu losowego Michał Krzemiński Streszczenie Omówimy metodę generowania trajektorii spacerów losowych (błądzenia losowego), tj. szczególnych procesów Markowa z

Bardziej szczegółowo

Zadanie 1. Potęgi (14 pkt)

Zadanie 1. Potęgi (14 pkt) 2 Egzamin maturalny z informatyki Zadanie 1. otęgi (14 pkt) W poniższej tabelce podane są wartości kolejnych potęg liczby 2: k 0 1 2 3 4 5 6 7 8 9 10 2 k 1 2 4 8 16 32 64 128 256 512 1024 Ciąg a=(a 0,

Bardziej szczegółowo

3a. Wstęp: Elementarne równania i nierówności

3a. Wstęp: Elementarne równania i nierówności 3a. Wstęp: Elementarne równania i nierówności Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2017/2018 Grzegorz Kosiorowski (Uniwersytet Ekonomiczny 3a. Wstęp: w Krakowie) Elementarne równania

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

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

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

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

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

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

3.Funkcje elementarne - przypomnienie

3.Funkcje elementarne - przypomnienie 3.Funkcje elementarne - przypomnienie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie rzegorz Kosiorowski (Uniwersytet Ekonomiczny3.Funkcje w Krakowie) elementarne - przypomnienie 1 / 51 1 Funkcje

Bardziej szczegółowo

Ogólne wiadomości o grafach

Ogólne wiadomości o grafach Ogólne wiadomości o grafach Algorytmy i struktury danych Wykład 5. Rok akademicki: / Pojęcie grafu Graf zbiór wierzchołków połączonych za pomocą krawędzi. Podstawowe rodzaje grafów: grafy nieskierowane,

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

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 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

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

Ł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

ZALICZENIE WYKŁADU: 30.I.2019

ZALICZENIE WYKŁADU: 30.I.2019 MATEMATYCZNE PODSTAWY KOGNITYWISTYKI ZALICZENIE WYKŁADU: 30.I.2019 KOGNITYWISTYKA UAM, 2018 2019 Imię i nazwisko:.......... POGROMCY PTAKÓW STYMFALIJSKICH 1. [2 punkty] Podaj definicję warunku łączności

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