Ogólne wiadomości o drzewach

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

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

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

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

Ogólne wiadomości o grafach

Teoretyczne podstawy informatyki

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

Drzewa czerwono-czarne.

ALGORYTMY I STRUKTURY DANYCH

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

Teoretyczne podstawy informatyki

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

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

Algorytmy i Struktury Danych

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

Matematyka dyskretna - 7.Drzewa

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

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

Drzewa poszukiwań binarnych

Porządek symetryczny: right(x)

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

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

7a. Teoria drzew - kodowanie i dekodowanie

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

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

Lista liniowa dwukierunkowa

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

Wykład 3. Drzewa czerwono-czarne

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

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

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

Algorytmy i struktury danych. wykład 5

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

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Struktury danych: stos, kolejka, lista, drzewo

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Listy, kolejki, stosy

Podstawy Informatyki. Wykład 6. Struktury danych

ALGORYTMY I STRUKTURY DANYCH

Algorytmy zachłanne. dr inż. Urszula Gałązka

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

Wstęp do programowania

0-0000, , , itd

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

Wykłady z Matematyki Dyskretnej

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

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

Algorytmy i Struktury Danych

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Programowanie obiektowe

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

Odwrotna Notacja Polska

Kompresja bezstratna. Entropia. Kod Huffmana

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

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

Koszt zamortyzowany. Potencjał - Fundusz Ubezpieczeń Kosztów Algorytmicznych

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

Drzewa poszukiwań binarnych

Algorytmy i Struktury Danych

. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019

Nierówność Krafta-McMillana, Kodowanie Huffmana

Programowanie obiektowe

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

TEORETYCZNE PODSTAWY INFORMATYKI

Struktury Danych i Złożoność Obliczeniowa

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

TEORETYCZNE PODSTAWY INFORMATYKI

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Temat: Algorytm kompresji plików metodą Huffmana

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

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

Drzewa podstawowe poj

Wybrane algorytmy tablicowe

Algorytmy i Struktury Danych.

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

7. Teoria drzew - spinanie i przeszukiwanie

Metody Kompilacji Wykład 3

Stos LIFO Last In First Out

Sortowanie bąbelkowe

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

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

Tadeusz Pankowski

STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA. Część 3. Drzewa Przeszukiwanie drzew

PODSTAWY INFORMATYKI wykład 6.

Podstawy Informatyki. Metody dostępu do danych

Algorytmy z powrotami. Algorytm minimax

Drzewa wyszukiwań binarnych (BST)

Algorytmy i struktury danych Struktury danych - drzewa IS/IO, WIMiIP

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

Algorytmy i Struktury Danych, 9. ćwiczenia

Algorytmy i struktury danych

SYSTEMY UCZĄCE SIĘ WYKŁAD 3. DRZEWA DECYZYJNE. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

Definicja pliku kratowego

Drzewo binarne BST. LABORKA Piotr Ciskowski

Przykładowe B+ drzewo

a) 7 b) 19 c) 21 d) 34

ALGORYTMY I STRUKTURY DANYCH

Algorytmy i struktury danych

Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski

Konkursy w województwie podkarpackim w roku szkolnym 2016/2017

Transkrypt:

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 jeden element wyróżniony zwany korzeniem drzewa. 2 1

Pojęcia związane z drzewem 1/2 węzeł element drzewa, krawędź połączenie występujące w drzewie, korzeo drzewa początkowy element drzewa, rodzic, przodek element nadrzędny dziecko, potomek element podrzędny liśd węzeł nie posiadający potomków węzeł wewnętrzny węzeł posiadający potomków poddrzewo rozpatrywany element wraz ze wszystkimi jego potomkami (bezpośrednimi i pośrednimi) 3 Pojęcia związane z drzewem 2/2 wysokośd drzewa długośd najdłuższej ścieżki od korzenia do liścia poziom węzła (głębokośd węzła) długośd ścieżki od korzenia do danego węzła. stopieo węzła liczba posiadanych przez węzeł potomków elementy siostrzane węzły posiadające tego samego rodzica co rozpatrywany węzeł 4 2

Rodzaje drzew drzewo uporządkowane drzewo, w którym potomkowie węzłów występują w ściśle określonej kolejności (np. alfabetycznej) drzewo etykietowane drzewo, w którym węzły lub krawędzie mają przypisane nazwy i/lub wartości drzewo binarne drzewo, w którym węzły mają co najwyżej dwóch potomków (potomek lewy oraz potomek prawy) 5 Implementacje drzew wektorowa, listowa, LCRS (LeftmostChild, RightSibling), implementacja drzew binarnych. 6 3

Implementacja wektorowa 1/3 implementacja wektorowa = implementacja rodzicielska, elementy drzewa należy ponumerowad kolejnymi liczbami całkowitymi, utworzyd wektor o liczbie elementów zgodnej z liczbą węzłów, ity element wektory przechowuje numer rodzica itego węzła 7 Implementacja wektorowa 2/3 0 1 2 3 4 5 6 7 8 9 1 0 0 0 1 1 2 2 3 3 0 1 2 3 4 5 6 7 8 9 8 4

Implementacja wektorowa 3/3 Cechy implementacji wektorowej: prosta, umożliwia prostą wędrówkę w kierunku korzenia drzewa, wędrówka od korzenia w kierunku liści wymaga sekwencyjnego przeglądnięcia wektora. 9 Implementacja listowa 1/2 0 1 2 3 4 5 6 7 8 9 0 1 2 3 1 2 3 4 5 6 7 8 9 4 5 6 7 8 Paweł Lula, Katedra Systemów Obliczeniowych, Uniwersytet 9 Ekonomiczny w Krakowie 10 5

Implementacja listowa 2/2 pozwala na łatwą wędrówkę od korzenia w kierunku liści, trudna jest wędrówka w kierunku korzenia wymaga sekwencyjnego przeglądania list potomków. 11 Implementacja LCRS (LeftmostChild, RightSibling) węzły identyfikowane są przez etykiety, a nie indeksy pozwala na stosunkowo proste poruszanie się po drzewie w obu kierunkach, pozwala na realizację zaawansowanych operacji na drzewie (np. łączenie drzew). 12 6

LCRS W A B C M N K L X Y Drzewo 7 LC RS 0 A 5 1 1 B 3 2 2 C 8 7 3 K 4 4 L 1 5 M 6 6 N 0 7 W 0 8 X 9 Paweł Lula, Katedra Systemów Obliczeniowych, Uniwersytet 9 YEkonomiczny 2w Krakowie 13 Implementacja drzew binarnych W A B M N K L Drzewo 6 LC RC 0 A 4 5 1 B 2 3 każdy węzeł przechowuje referencje do lewego (LC left child) oraz prawego (RC right child) potomka 2 3 4 K L M 5 N Paweł Lula, Katedra Systemów Obliczeniowych, Uniwersytet Ekonomiczny 6 w Krakowie W 0 1 14 7

Poruszanie się po drzewie sposób poruszania się po drzewie kolejnośd odwiedzania węzłów trzy podstawowe metody poruszania się po drzewie: preorder, postorder, inorder. 15 Metoda preorder 1 2 3 4 5 6 7 8 9 10 Metoda preorder rozpoczyna się od korzenia drzewa, a następnie odwiedzane są wszystkie jego poddrzewa w kolejności od lewej do prawej strony Przechodzenie preorder: 1 2 3 5 8 9 6 10 4 7 16 8

Metoda postorder 1 2 3 4 5 6 7 8 9 10 Metoda postorder w pierwszej kolejności odwiedzane są wszystkie poddrzewa w kolejności od lewej do prawej strony, a następnie odwiedzany jest korzeo drzewa. Przechodzenie postorder: 2 8 9 5 10 6 3 7 4 1 17 Metoda inorder 1 2 3 4 5 6 7 Metoda inorder odwiedzane jest lewe 8 9 10 skrajne poddrzewo, następnie korzeo drzewa, po czym następuje przejście przez pozostałe poddrzewa w kolejności od lewej do prawej strony. Przechodzenie inorder: 2 1 8 5 9 3 10 6 7 4 18 9

Ręczna implementacja metod poruszania się po drzewie 1/2 1 2 3 4 5 6 7 8 9 10 19 Ręczna implementacja metod poruszania się po drzewie 2/2 wychodząc od korzenia drzewa należy odwiedzid wszystkie jego elementy w kierunku przeciwnym do ruchu wskazówek zegara, sposób dalszego postępowania jest uzależniony od metody poruszania się po drzewie: metoda preorder należy wypisad etykietę każdego węzła przy jego pierwszym odwiedzeniu, czyli uzyskamy: 1, 2, 3, 5, 8, 9, 6, 10, 4, 7 metoda postorder należy wypisad etykietę każdego węzła przy jego ostatnim odwiedzeniu, co daje: 2, 8, 9, 5, 10, 6, 3, 7, 4, 1 metoda inorder: jeżeli węzeł jest liściem, to jego etykieta jest wypisywana przy pierwszym odwiedzeniu, jeżeli węzeł jest węzłem wewnętrznym, to jego etykieta jest wypisywana przy drugim odwiedzeniu. co daje w rozpatrywanym przykładzie: 2, 1, 8, 5, 9, 3, 10, 6, 7, 4 20 10

Drzewa wyrażeo arytmetycznych * 3 + 2 5 3 * (2 + 5) notacja infiksowa Poruszanie się po drzewie w porządku preorder 3 + 2 5 notacja prefiksowa Poruszanie się po drzewie w porządku postorder 3 2 5 + * notacja postfiksowa 21 Dokument HTML jako drzewo 1/2 <HTML> <HEAD> <TITLE>Publikacja</TITLE> </HEAD> <BODY> <H1>Spis treści</h1> <UL> <LI>Wstęp</LI> <LI>Przebieg badao</li> <LI>Rezultaty</LI> <LI>Wnioski koocowe</li> </UL> <BR> <I>Data ostatniej aktualizacji: <B>1 marca 2003</B></I> </BODY> </HTML> 22 11

Dokument HTML jako drzewo 2/2 HTML HEAD BODY TITLE H1 UL BR I LI LI LI LI B 23 Dokument XML jako drzewo Język XML: pozwala na definiowanie struktury przechowywanych zasobów danych, umożliwia przechowywanie danych, pozwala na określenie sposobu przekształcania zgromadzonych zasobów. 24 12

Magazyn 1/3 <?xml version="1.0" encoding="iso88592"?> <?xmlstylesheet type="text/css" href="styl.css"?> <!DOCTYPE MAGAZYN [ <!ELEMENT NAZWA (#PCDATA)> <!ELEMENT PRODUCENT (#PCDATA)> <!ELEMENT CENA (#PCDATA)> <!ELEMENT TOWAR (NAZWA, PRODUCENT?, CENA)> <!ELEMENT TYTUL (#PCDATA)> <!ELEMENT MAGAZYN (TYTUL?,TOWAR+)> ]> 25 Magazyn 2/3 <MAGAZYN> <TYTUL>STAN MAGAZYNU</TYTUL> <TOWAR> <NAZWA>Chleb wiejski</nazwa> <PRODUCENT>Piekarnia "Tradycyjna"</PRODUCENT> <CENA>1.70</CENA> </TOWAR> <TOWAR> <NAZWA>Masło domowe</nazwa> <PRODUCENT>Społdzielnia Mleczarska</PRODUCENT> <CENA>2.50</CENA> </TOWAR> 26 13

Magazyn 3/3 <TOWAR> <NAZWA>Masło domowe</nazwa> <PRODUCENT>Społdzielnia Mleczarska</PRODUCENT> <CENA>2.50</CENA> </TOWAR> <TOWAR> <NAZWA>Zapałki</NAZWA> <CENA>0.35</CENA> </TOWAR> </MAGAZYN> 27 Dokument XML jako drzewo 28 14

Drzewo poszukiwao binarnych Drzewo poszukiwao binarnych drzewo binarne, etykietowane, w którym dla każdego węzła spełniona jest następująca zależnośd: etykiety węzłów znajdujących się w jego lewym poddrzewie są nie większe od etykiety przypisanej rozpatrywanemu węzłowi, etykiety węzłów znajdujących się w jego prawym poddrzewie są nie mniejsze od etykiety przypisanej rozpatrywanemu węzłowi. 29 Struktura przykładowego drzewa poszukiwao binarnych 5 4 6 2 5 8 30 15

Działania na drzewie poszukiwao binarnych Wyświetlanie elementów w sposób uporządkowany przejście po drzewie metodą inorder: 2, 4, 5, 5, 6, 8 Wyznaczanie wartości minimalnej przejście od korzenia do liścia, wybierając zawsze lewe poddrzewo: 5, 4, 2 Wyznaczanie wartości maksymalnej przejście od korzenia do liścia, wybierając zawsze prawe poddrzewo: 5, 6, 8 31 Wyszukiwanie zadanej wartości w drzewie poszukiwao binarnych Wyszukiwanie wartości w drzewie poszukiwao binarnych szukaj(wartośd, drzewo) { if (drzewo = null) or (wartośd = etykieta(drzewo)) return drzewo if (wartośd < etykieta(drzewo) return szukaj(wartośd, lewepoddrzewo(drzewo)) else return szukaj(wartośd,prawepoddrzewo(drzewo)) } Zastosowania: struktury słownikowe listy przeszukiwanych wartości 32 16

Kodowanie Huffmana metoda kompresji bezstratnej (przydatna do kompresji tekstów, programów), metoda ta wykorzystuje różnice w częstościach występowania poszczególnych znaków w tekście (krótsze kody przypisywane są znakom częściej się pojawiającym, zaś dłuższe znakom rzadko występującym), metoda ta wykorzystywana jest w popularnych programach pakujących (np. pkzip, arj). 33 Kodowanie Huffmana przykład Załóżmy, że: w tekście występują tylko cztery znaki: A, B, C, D, długośd tekstu wynosi 1000 znaków Przed kompresją: do zakodowania jednego znaku potrzebne są 2 bity: A 00; B 01; C 10; D 11 do zakodowania tekstu o długości 1000 znaków potrzeba 2000 bitów. 34 17

... Wyznacza się częstości wystąpienia każdego ze znaków A (45%) B (15%) C (35%) D (5%) Porządkuje się elementy względem częstości występowania (od najrzadziej do najczęściej występującego) D (5%) B (15%) C (35%) A (45%) 35... w kolejnych krokach pobiera się dwa najrzadziej występujące elementy, łączy w jeden i umieszcza na odpowiedniej pozycji listy krok 1 połączenie elementów D i B (D, B) (20%) C (35%) A (45%) 36 18

... krok 2 połączenie (D, B) i C A (45%) ((D, B), C) (55%) krok 3 połączenie A i ((D, B), C) (A, ((D, B), C)) (100%) 37... kody znaków wyznaczają ścieżkę prowadzącą od korzenia do danego znaku (0 lewa gałąź, 1 prawa gałąź) A 0 B 101 C 11 D 100 A C D B 38 19

... Długośd tekstu zakodowanego: A: 1 * 0.45 * 1000 = 450 bitów B: 3 * 0.15 * 1000 = 450 bitów C: 2 * 0.35 * 1000 = 700 bitów D: 3 * 0.05 * 1000 = 150 bitów SUMA: 1750 bitów 39 Dodawanie elementów do drzewa Dodawane elementy: 5, 4, 2, 5, 6, 8 kolejnośd losowa 5 Drzewo zrównoważone 4 6 2 5 8 40 20

Dodawanie elementów do drzewa Dodawane elementy: 2, 4, 5, 5, 6, 8 2 kolejnośd wynikająca z uporządkowania elementów 4 5 5 Drzewo niezrównoważone 6 8 41 Drzewa czerwonoczarne każdy węzeł ma jeden z dwóch kolorów: czerwony lub czarny, korzeo ma kolor czarny, każdy pusty liśd (NIL) jest czarny, synowie czerwonego wierzchołka są czarni, każda ścieżka z korzenia do jakiegokolwiek liścia zawiera tą samą liczbę czarnych węzłów (czarna wysokośd). 42 21

Przykładowe drzewo czerwonoczarne drzewo czerwonoczarne jest w przybliżeniu drzewem zrównoważonym 43 Niezachowanie własności drzew czerwonoczarnych Niezachowanie własności drzew czerwonoczarnych powoduje, że drzewo traci charakter zrównoważony Przyczyną niezachowania własności jest: wstawienie, usunięcie elementu. W celu przywrócenia własności stosuje się metodę: rotacji, ponownego kolorowania węzłów (przekolorowywania) 44 22

Rotacja Rotacja zachowuje porządek inorder węzłów drzewa 45 Dodawanie elementu do drzewa Określenie położenia nowego elementu jak w drzewie poszukiwao binarnych Przypisanie nowemu elementowi koloru czerwonego: Jeżeli rodzic wstawionego węzła jest czarny to własnośd drzewa została zachowana. Jeżeli rodzic wstawionego węzła jest czerwony to własnośd drzewa została zaburzona (rodzic i syn mają kolor czerwony). Aby przywrócid własnośd należy przekolorowad niektóre węzły i dokonad rotacji węzłów 46 23

Implementacja w języku Java Klasy TreeSet oraz TreeMap wykorzystują drzewa czerwonoczarne do przechowania uporządkowanych zbiorów elementów (bez powtórzeo) 47 24