Struktury Danych i Złożoność Obliczeniowa Zajęcia 3 Struktury drzewiaste
drzewo binarne szczególny przypadek drzewa, które jest szczególnym przypadkiem grafu skierowanego, stopień każdego wierzchołka jest nie większy niż 3, drzewo binarne może być ukorzenione, gdy jeden z wierzchołków nazwany jest korzeniem (jest wówczas stopnia 2, ma dwóch synów ),
drzewo binarne
drzewo binarne
drzewo BST BST Binary Search Tree binarne drzewo przeszukiwań, rodzaj drzewa binarnego, w lewej gałęzi znajdują się elementy mniejsze od rodzica a w prawej nie mniejsze od niego, każdy z węzłów (implementacyjnie) zna swoje dwoje dzieci, niekiedy też posiada informację o swoim (jednym) rodzicu, nie jest możliwe, aby drzewo posiadało dwa równe elementy (elementy muszą być unikalne).
drzewo BST przykładowe drzewo BST:
drzewo BST Zalety zastosowania BST: wyszukiwanie określonego elementu w średnim czasie O(logn) a pesymistycznym O(n). Zastosowania drzewa BST: różnego rodzaju słowniki, kolejki,
drzewo BST Można mówić o zrównoważeniu drzewa BST, gdy różnica w wysokości lewego i prawego poddrzewa jest nie większa niż 1, natomiast drzewo jest doskonale zrównoważone, gdy wszystkie liście znajdują się na co najwyżej dwóch poziomach.
drzewo BST przykład drzewa BST zrównoważonego:
drzewo BST przykład drzewa BST doskonale zrównoważonego:
algorytm DSW Algorytm DSW umożliwia zrównoważenie drzewa BST, został opracowany przez trzech panów: Colina Day'a, Quentina F. Stouta, oraz Better. L. Warrena stąd nazwa DSW, algorytm dwufazowy, wykorzystuje do działania operacje rotacji,
rotacja Zaraz wrócimy do algorytmu DSW ;) rotacja zmniejsza głębokość jednej ze stron poddrzewa, natomiast zwiększa głębokość drugiej strony poddrzewa, rotacja wykonywana jest w stałym czasie,
rotacja w prawo
rotacja w prawo
rotacja w prawo
rotacja w lewo
rotacja w lewo
rotacja w lewo
algorytm DSW I faza algorytmu: zamieniamy całe drzewo w listę powstaje wówczas drzewo, w którym węzły mają tylko dzieci po prawej stronie, wykonujemy wielokrotnie rotację w prawo między węzłem, który posiada lewe dziecko a tym właśnie dzieckiem, II faza algorytmu: wykonujemy rotację w lewo na co drugim elemencie powstałej listy,
algorytm DSW Przykład działania: http://webdiis.unizar.es/asignaturas/eda/avltree/a
drzewo AVL Drzewo BST, w którym wysokość lewego i prawego poddrzewa każdego węzła różni się co najwyżej o jeden nazwiemy drzewem AVL, AVL od Gieorgij Adelson-Wielskij i Jewgienij Łandis, czyli od nazwisk dwóch twórców drzewa, zastosowanie drzewa AVL (w porównaniu do tradycyjnego drzewa BST) daje nam pesymistyczny czas wyszukiwania elementu na poziomie 1,44(logn) w przypadku BST było to n.
drzewo AVL przykład drzewa BST, które nie jest AVL.
drzewo AVL drzewo z tymi samymi elementami, które ma własność AVL.
drzewo splay Struktura drzewiasta zachowująca własność drzewa BST, jest to struktura samodostosowująca się w czasie operacji wyszukiwania określonych elementów, wyszukiwany węzeł przesuwany jest w kierunku korzenia, dzięki czemu kolejne znalezienie tego samego elementu za drugim (kolejnym) razem jest znacznie szybsze.
drzewo splay po wykonaniu operacji wyszukiwania wywoływana jest procedura splay, która powoduje, że wyszukiwany wierzchołek staje się korzeniem drzewa, aby tego dokonać, wykonywane są w ramach splay trzy operacje: zig (gdy ojciec wyszukiwanego elementu jest korzeniem), zig-zig (gdy ojciec nie jest korzeniem a krawędź x-p i p-g są w jedną stronę) podwójna rotacja, zig-zag (gdy ojciec nie jest korzeniem a krawędź x-p i p-g są w dwie różne strony) dwie rotacje.
drzewo splay Przykład działania drzewa splay http://aleph0.clarku.edu/~achou/cs102/examples/bs
drzewo dwumianowe struktura drzewiasta zdefiniowana rekurencyjnie: drzewo stopnia 0 ma jeden węzeł (korzeń), drzewo stopnia k posiada węzeł (korzeń) oraz dzieci, które są drzewami dwumianowymi stopni (k-1), (k2)..., 0. drzewo dwumianowe stopnia k skonstruowane jest z dwóch drzew dwumianowych stopnia (k-1) poprzez połącznie ich w taki sposób, że jedno z nich jest skrajnym lewym dzieckiem drugiego.
drzewo dwumianowe Drzewo dwumianowe stopnia 0:
drzewo dwumianowe Drzewo dwumianowe stopnia 1:
drzewo dwumianowe Drzewo dwumianowe stopnia 2:
drzewo dwumianowe Drzewo dwumianowe stopnia 3:
drzewo dwumianowe Drzewo dwumianowe stopnia 4:
kopiec dwumianowy Kopiec dwumianowy to zbiór wielu drzew dwumianowych, w kopcu dwumianowym może wystąpić jeden stopień drzewa dwumianowego tylko jeden raz, każde drzewo dwumianowe w zbiorze zachowuje własność kopca (wartość węzła jest większa lub równa od wartości jego rodzica),
kopiec dwumianowy Znalezienie elementu najmniejszego w kopcu wykonuje się poprzez przejrzenie wszystkich korzeni drzew, łatwość stworzenia kopca powoduje, że kopiec ten jest często i chętnie wykorzystywany przy implementacji w porównaniu do innych kopców, do przechowania odpowiedniej ilości elementów stosuje się metodę zapisu binarnego.
kopiec dwumianowy przykładowy kopiec dwumianowy kopiec liczy 13 elementów = 8+4+1 = 1101B zawiera 1 lub 0 drzew d.m. o określonym rzędzie.
Pytania?