Z Wykład 26.04.2008, Programowanie


Dziś przejdziemy do tematu związanego z drzewami losowymi i drzepcami. O losowym drzewie BST o n wartościach mówimy, że jest to drzewo BST, które powstaje z drzewa pustego w wyniku wstawienia wartości (kluczy) w losowej kolejności przy założeniu, że każda z n! permutacji tych wartości jest jednakowo prawdopodobna. Można pokazać, że oczekiwana wartośc drzewa losowego BST o n kluczach wynosi 0x01 graphic
, czyli inaczej: 0x01 graphic
. Warto wiedzieć, że losowe drzewo BST ma tendencję bycia zrównoważonym. I teraz nieco o samym drzepcu. Drzepiec to drzewo BST, w którym porządek wstawiania elementów określany jest w pewien specjalny sposób. W każdym węźle drzepca oprócz pola wartości występuje pole prioryetet, którego wartością jest losowo określana liczba niezależnie dla każdego węzła (przy założeniu, że wszystkie wartości i wszystkie priorytety są różne. Elementy, czyli węzły w drzepcusa uporządkowane w taki sposób, że wartości (klucze) spełniają kryteria drzewa BST, natomiast priorytety spełniają własność kopca minimalnego, czyli z z najmniejszym priorytetem w korzeniu. Drzepiec jest więc połączeniem drzewa BST i kopca. Pomocne jest, aby mysleć o drzepcach w następujący sposób. Załóżmy, że wstawiamy do drzepca węzły 0x01 graphic
wraz ze związanymi z nimi wartościami (kluczami). Aby otrzymać drzepiec wstawiamy te węzły w kolejności wyznaczonej przez ich (losowo ustalone) prioytety, co znaczy, że 0x01 graphic
jest wstawiany przez 0x01 graphic
, jeżeli priorytet(0x01 graphic
) < priorytet (0x01 graphic
). No i popatrzmy na przykład takiego drzepca:

0x01 graphic

Zobaczmy teraz jak wygląda cała idea wstawiania węzła do drzepca:

0x01 graphic

0x01 graphic

0x01 graphic

0x01 graphic

I teraz przejdziemy do drzew silnie uporządkowanych. Jednym z takiech drzew jest drzewo AVL. Nazwa drzewa powstała od nazwisk Adelson - Velskii, Landis. Te osoby w 1962 stworzyli ten właśnie rodzaj drzewa. Drzewo AVL jest rozwinięciem drzewa BST z zachowaniem wszystkich jego własności, natomiast dla każdego wierzchołka w drzewie AVL wysokości jego dwóch poddrzew (lewego i prawego) o korzeniu w tym wierzchołku różnią się co najwyżej o 1. Węzeł oprócz pól danych oraz lewego i prawego wskaxnika ma też pole opisujące różnicę wysokości lewego i prawego poddrzewa. Z definicji wynika, że to pole może mieć wartości ze zbioru {-1, 0, 1}.

0x01 graphic

0x08 graphic
Zobaczmy teraz, jak się oblicza wagi wierzchołków tego drzewa. Dla każdego wierzchołka drzewa x współczynnik zrównoważenia w(x) ma postać:

0x01 graphic
, gdzie LD i PD sa odpowiednio lewym i prawym poddrzewem o korzeniu x. Drzewo BST jest drzewem AVL wtedy i tylko wtedy, gdy dla każdego wierzchołka x: 0x01 graphic
. Teraz jakie operacje możemy wykonywać na drzewie AVL. Na pewno możena dokonac wyszukiwania. Z kolei wiedząc, że drzewo AVL jest też drzewem BST, więc ta operacja wygląda tak, jak dla drzew BST. Kolejna operacja to wstawianie. Wstawianie polega tu na wyszukaniu miejsca w drzewie, a następnie wstawieniu elementu (tak, jak w BST). Ponieważ podczas tej operacji struktura drzewa zmienia się i może nie zostać zachowany warunek AVL (dotyczący róznicy w wysokości poddrzew) trzeba tę strukturę przywrócić. Wymagana jest więc takzwana rotacja. Na ponoższych rysunkach zostało przedstawione drzewo wyjściowe. Do niego dodajemy węzeł z wartością 3 i otrzymujemy drzewo z nowym węzłem:

0x01 graphic

0x08 graphic
No i kolej na usuwanie. Polega ono na wyszukaniu elementu w drzeiwe, a następnie jego usunięciu (tak, jak w BST). Z kolei tutaj może zajść potrzeba przywrócenia zrównoważonej struktury drzewa i tu wymagana jest rotacja. Rotacja polega na zmianie konfiguracji węzłów. Głównym celem jest tu przywrócenie struktury drzewa AVL. Wyróżniamy cztery rodzaje rotacji: lewe i prawe, oraz pojedyncze i podwójne. Natomiast nim omówimy te dwie pierwsze warto wspomnieć, że usunięcie elementu z drzewa AVL może zmniejszyć wysokośc tego poddrzewa i dlatego stosuje się tutaj rotację. Oto to samo drzewo, co wprzykładzie, ale już zrównoważone:

0x01 graphic

0x08 graphic
No i teraz omówmy lewą i prawą rotację. Lewa rotacja lub rotacja w lewo węzła y wokół węzła x polega na obrocie węzła y wokół wyróżnionego węzła x przeciwnie do ruchu wskazówek zegara. W wyniku rotacji węzeł staje się nowym korzeniem poddrzewa, a węzeł x staje się jego lewym synem. Z kolei lewy syn węzła y zostaje prawym synem węzła x. Taką rotację można wykonać jeżeli prawy syn węzła y nie jest NULL.

Prawa rotacja lub rotacja w prawo węzła x wokół węzła y polega na obrocie węzła x wokół wyróżnionego węzła y zgodnie z ruchem wskazówek zegara. W wyniku rotacji węzeł x staje się nowym korzeniem poddrzewa, a węzeł y staje się jego prawym synem. Z kolei prawy syn węzła x zostaje loewym synem węzła y. Taką rotację można wykonać jeżeli lewy syn węzła x nie jest NULL. I na razie na tym skończymy wykład.



Wyszukiwarka

Podobne podstrony:
Z Ćwiczenia 26.04.2008, Programowanie
Z Wykład 06.04.2008, Programowanie
Z Wykład 26.04.2008, Zajęcia, II semestr 2008, Rachunek prawdopodobieństwa
wyklad z 04 2008[2]
2 wyklad 03 04 2008
Z Wykład 19.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
wyklad 8 10.04.2008, Administracja UŁ, Administracja I rok, Ustrój organów ochrony prawnej
wyklad 7 11.04.2008, Administracja UŁ, Administracja I rok, Wstęp do prawoznawstwa
wyklad 9 17.04.2008, Administracja UŁ, Administracja I rok, Ustrój organów ochrony prawnej
wyklad 8 14.04.2008, Administracja UŁ, Administracja I rok, Zasady tworzenia i stosowania prawa
wyklad 9 21.04.2008, Administracja UŁ, Administracja I rok, Zasady tworzenia i stosowania prawa
wyklad 9 25.04.2008, Administracja UŁ, Administracja I rok, Wstęp do prawoznawstwa
wyklad 8 18.04.2008, Administracja UŁ, Administracja I rok, Wstęp do prawoznawstwa
wyklad 19 9.04.2008, wyklady - dr krawczyk
wykład 8- (26. 04. 2001), Ekonomia, Studia, I rok, Finanase publiczne, Wykłady-stare, Wykłady
Z Ćwiczenia 26.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna

więcej podobnych podstron