Jak udowodnić, że oczekiwana wysokość losowo zbudowanego drzewa wyszukiwania binarnego z węzłami wynosi ? Istnieje dowód we CLRS Wstęp do algorytmów (rozdział 12.4), ale ja go nie rozumiem.
data-structures
algorithm-analysis
binary-trees
search-trees
average-case
użytkownik1675999
źródło
źródło
Odpowiedzi:
Pomyślmy o tym intuicyjnie. W najlepszym przypadku drzewo jest idealnie zrównoważone; w najgorszym przypadku drzewo jest całkowicie niezrównoważone:
Zaczynając od węzła głównego , to lewe drzewo ma dwukrotnie więcej węzłów na każdej kolejnej głębokości, tak że drzewo ma węzły i wysokość (czyli w tym przypadku 3). Przy odrobinie matematyki , co oznacza, że ma wysokość. W przypadku drzewa całkowicie niezrównoważonego wysokość drzewa wynosi po prostu . Mamy więc swoje granice.n = ∑ h i = 0 2 i = 2 h + 1 - 1 h n ≤ 2 h + 1 - 1 → h ≤ ⌈ log 2 ( n + 1 ) - 1 ⌉ ≤ ⌊ l o g 2 n ⌋ O ( log n ) n - 1 → O (p n=∑hi=02i=2h+1−1 h n≤2h+1−1→h≤⌈log2(n+1)−1⌉≤⌊log2n⌋ O(logn) n−1→O(n)
Gdybyśmy budowali drzewo zrównoważone z uporządkowanej listy , wybralibyśmy środkowy element, który będzie naszym węzłem głównym. Jeśli zamiast tego losowo konstruujemy drzewo, każdy z węzłów zostanie równie prawdopodobnie wybrany, a wysokość naszego drzewa wynosi: Wiemy, że w drzewie wyszukiwania binarnego lewe poddrzewo musi zawierać tylko klucze mniejsze niż węzeł główny. Tak więc, jeśli losowo wybieramy element , lewe poddrzewo ma elementy , a prawe poddrzewa ma elementy , więc bardziej kompaktowo:n h e i g h t t r e e = 1 + max ( h e i g h t l e f t s u b t r e e , h e i g h t r i g h t s u b{1,2,…,n} n i t h i - 1 n - i h n = 1 + max ( h i - 1 , h n - i ) E [ h n ] = 1
Jak zapewne zauważyłeś, nieznacznie odstąpiłem od tego, jak CLRS to udowadnia, ponieważ CLRS używa dwóch stosunkowo powszechnych technik dowodowych, które są niepokojące dla niewtajemniczonych. Pierwszym z nich jest użycie wykładników (lub logarytmów) tego, co chcemy znaleźć (w tym przypadku wysokości), co sprawia, że matematyka jest nieco bardziej przejrzysta; drugim jest użycie funkcji wskaźnika (które zamierzam tutaj zignorować). CLRS definiuje wysokość wykładniczą jako , więc analogiczna rekurencja to . Y n = 2 × max ( Y i - 1 , Y n - iYn= 2hn Yn= 2 × maks. ( Yja - 1, Yn - i)
Zakładając niezależność (że każde losowanie elementu (spośród dostępnych elementów) jako podstawy poddrzewa jest niezależne od wszystkich poprzednich losowań), nadal mamy relację: dla którego zrobiłem dwa kroki: (1) przesunięcie zewnątrz, ponieważ jest stała, a jedną z właściwości sumowania jest to, że , oraz (2) przeniesienie 2 na zewnątrz, ponieważ jest to również stała, a jedną z właściwości oczekiwanych wartości jest . Teraz zastąpimy
W tym momencie CLRS wyciąga dowód indukcyjny nazwa z ich ... repertuaru doświadczeń matematycznych, takiego, który zawiera tożsamość które użytkownik musi udowodnić. Ważne w ich wyborze jest to, że jego największym terminem jest i przypominamy, że używamy wysokości wykładniczej tak że . Być może ktoś skomentuje, dlaczego wybrano ten konkretny dwumian. Jednak ogólną ideą jest ograniczenie z góry naszego ponownego wystąpienia wyrażeniem dla pewnego stałego .mi[ Yn] ≤ 14( n+33)) ∑n - 1i = 0( i+33)) = ( n+34) n3) Yn= 2hn hn= log2)n3)= 3 log2)n → O ( logn ) nk k
Na zakończenie z jedną linią:
źródło
n^k
), wniosek jest taki sam, ponieważk
jest on odrzucany w notacji big-O (sposób 3 został usunięty). Ale jeśli podstawimy coś wykładniczego (e^n
), nadal będzie to prawidłowa górna granica, po prostu nie ścisła . Wiemy, że oczekiwana wysokość jest co najmniej logarytmiczna, więc ustalenie, że jest co najwyżej logarytmiczne, czyni ją ciasną.