ASD Ćwiczenia 8: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
mNie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 43: | Linia 43: | ||
<div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible-content" style="display:none"> | ||
.................. | Niech <math>\mu(r)</math> i <math>\mu'(r)</math> oznaczają wartość funkcji <math>\mu</math> dla węzła <math>r</math>, odpowiednio, przed i po operacji splay. Dalej, niech <math>v</math>, <math>w</math> i <math>u</math> oznaczają węzły jak w definicji operacji splay. Rozważamy trzy przypadki, odpowiadające trzem podpunktom w tej definicji. | ||
(1) Węzeł <math>u</math> nie istnieje, bo <math>v</math> jest synem korzenia <math>w</math>. <br> | |||
Do wykonania mamy tylko ROT1<math>(v, w)</math>, a do zużycia <math>3(\mu'(v)-\mu(v))+1</math> jednostek kredytu. Mamy <math>\mu'(v) = \mu(w)</math> oraz <math>\mu'(w) \le \mu'(v)</math>. | |||
Na utrzymanie niezmiennika (***) potrzeba <br> | |||
<math>\mu'(v)+\mu'(w)-\mu(v)-\mu(w) = \mu'(w)-\mu(v) \le \mu'(v)-\mu(v) \le 3(\mu'(v)-\mu(v)</math><br> | |||
jednostek kredytu. Pozostałą 1 jednostkę przeznaczamy na opłacenie wykonania rotacji. | |||
(2) Oba węzły <math>v</math> i <math>w</math> są lewymi synami (albo oba prawymi). <br> | |||
Wykonujemy ROT1<math>(w,u)</math>, a następnie ROT1<math>(v,w)</math>. Pokażemy, że do wykonania tych dwóch rotacji i utrzymania niezmiennika (***) wystarczy <math>\le 3(\mu'(v)-\mu(v)</math> jednostek kredytu (podobnie jak w przypadku (3)). Sumując to oszacowanie po wszystkich operacjach wykonywanych w ramach procedury splay, dostajemy sumę teleskopową jak w tezie lematu. | |||
Mamy <math>\mu'(v) = \mu(u)</math>. Na utrzymanie niezmiennika (***) potrzeba <br> | |||
<math>\Delta\mu = \mu'(v)+\mu'(w)+\mu'(u)-\mu(v)-\mu(w)-\mu(u) = \mu'(w)+\mu'(u)-\mu(v)-\mu(w) = (\mu'(w)-\mu(v)) + (\mu'(u)-\mu(w)) \le 2(\mu'(v)-\mu(v))</math><br> | |||
jednostek kredytu, co pozostawia <math>\mu'(v)-\mu(v)</math> jednostek na opłacenie wykonania dwóch rotacji. Może się jednak zdarzyć, że <math>\mu'(v)=\mu(v)</math>. Pokażemy, że wtedy <math>\Delta\mu <0</math>, więc utrzymujemy niezmiennik (***), odbierając jednostkę kredytu na opłacenie rotacji. | |||
Przypuśćmy przeciwnie, że <math>\mu'(v)=\mu(v)</math>, ale <math>\mu'(v)+\mu'(w)+\mu'(u)\ge\mu(v)+\mu(w)+\mu(u)</math>. Mamy <math>\mu(u) = \mu'(v) = \mu(v)</math>, skąd <math>\mu(w) = \mu(v) = \mu(u)</math>, więc <math>\mu'(v)+\mu'(w)+\mu'(u)\ge 3\mu(u) = 3\mu'(v)</math>, czyli <math>\mu'(w)+\mu'(u)\ge 2\mu'(v)</math>. Ponieważ <math>\mu'(w), \mu'(u)\le\mu'(v)</math>, to wnioskujemy, że również <math>\mu'(w) = \mu'(v) = \mu'(u)</math>. To jednak jest niemożliwe: niech bowiem <math>a</math> oznacza rozmiar poddrzewa o korzeniu <math>v</math> przed operacją, zaś <math>b</math> - rozmiar poddrzewa o korzeniu <math>u</math> po operacji. Mielibyśmy wówczas równość <math>\lfloor \lg a\rfloor = \lfloor \lg (a+b+1)\rfloor = \lfloor \lg b\rfloor</math>. Załóżmy dla ustalenia uwagi, że <math>a\le b</math>; mamy <math>\lfloor \lg (a+b+1)\rfloor\ge\lfloor \lg (2a)\rfloor = 1+\lfloor \lg a\rfloor > \lfloor \lg a\rfloor</math>, sprzeczność. | |||
(3) Węzeł <math>v</math> jest lewym synem, a <math>w</math> prawym, albo odwrotnie. | |||
Dowód analogiczny jak w przypadku (2). | |||
</div> | </div> | ||
</div> | </div> |
Wersja z 09:11, 24 sie 2006
Zadanie 1
Udowodnij, że wysokość drzewa AVL jest logarytmiczna względem jego rozmiaru.
Rozwiązanie
Zadanie 2
Oblicz, ile jest różnych drzew Fibonacciego o wysokości .
Rozwiązanie
Zadanie 3
Napisz pseudokod operacji Insert i Delete w drzewach AVL.
Zadanie 4
Udowodnij Lemat 1.
Rozwiązanie
Zadanie
Opisane tu operacje Insert i Delete dla B-drzew są dwuprzebiegowe: najpierw schodzimy od korzenia do liścia, a następnie wracamy w górę drzewa przywracając warunki równowagi. Zaprojektuj wymagające z grubsza o połowę odwołań do dysku mniej jednoprzebiegowe algorytmy wstawiania i usuwania kluczy z B-drzewa, w których przywracanie równowagi odbywa się od razu podczas marszu w dół drzewa.
Rozwiązanie