Доказ того, що випадкове побудоване двійкове дерево пошуку має логарифмічну висоту


10

Як довести, що очікувана висота випадково побудованого двійкового дерева пошуку з вузлами дорівнює ? Є доказ у CLRS Введення в алгоритми (глава 12.4), але я цього не розумію.nO(log⁡n)


1
Яке питання? Який приклад? Будь ласка, відредагуйте та надайте повну інформацію.
— Ран Г.

3
Будь ласка, уникайте використання скорочень (наприклад, BST) і припускайте, що у більшості з нас немає книги CLRS. Якщо ви зможете скопіювати сюди теорему і пояснити, що ви не розумієте, ви отримаєте більше відповідей.
— Ран Г.

2
Це залежатиме від того, як побудовано двійкове дерево пошуку. (Навіть якщо результату немає, доказ буде.) Ще кілька деталей були б корисні.
— Пітер Шор

Відповіді:


21

Давайте спочатку подумаємо про це інтуїтивно. У найкращому випадку дерево є ідеально збалансованим; у гіршому випадку дерево зовсім не врівноважене:

Зрівноважене по висоті дерево бінарного пошукуНайгірше дерево бінарного пошуку

Починаючи з кореневого вузла , це ліве дерево має вдвічі більше вузлів на кожній наступній глибині, так що дерево має вузол і висота (що в даному випадку 3). З невеликою математикою, , що означає, що вона має висота. Для повністю незбалансованого дерева висота дерева просто . Отже, у нас є межі.pn=∑i=0h2i=2h+1−1hn≤2h+1−1→h≤⌈log2⁡(n+1)−1⌉≤⌊log2n⌋O(log⁡n)n−1→O(n)

Якби ми будували збалансоване дерево із упорядкованого списку , ми вибрали б середній елемент, який буде нашим кореневим вузлом. Якщо ми замість цього випадково будуємо дерево, будь-який з вузлів однаковою мірою буде вибраний, і висота нашого дерева становить: Ми знаємо, що у двійковому дереві пошуку ліве піддерево повинно містити лише ключі менше, ніж кореневий вузол. Таким чином, якщо ми вибираємо випадковим чином елемент, у лівого піддерева є елементи а в правому піддереві є елементів, тож більш компактно:{1,2,…,n}n

heighttree=1+max(heightleft subtree,heightright subtree)
ithi−1n−ihn=1+max(hi−1,hn−i). Звідси має сенс, що якщо кожен елемент з однаковою ймовірністю буде обраний, очікуване значення - це лише середнє значення всіх випадків (а не зважене середнє). Отже:E⁡[hn]=1n∑i=1n[1+max(hi−1,hn−i)]

Як я впевнений, ви помітили, я трохи відхилився від того, як це підтверджує CLRS, тому що CLRS використовує дві відносно поширені методи доказування, які заважають непосвяченим. Перший полягає у використанні експонентів (або логарифмів) того, що ми хочемо знайти (в даному випадку висоти), що змушує математику працювати трохи більш чисто; друге - використовувати функції індикаторів (які я просто збираюся тут ігнорувати). CLRS визначає експоненціальну висоту як , тому аналогічний повтор .Yn=2hnYn=2×max(Yi−1,Yn−i)

Припускаючи незалежність (що кожний малюнок елемента (з наявних елементів) є коренем піддірева незалежно від усіх попередніх малюнків), ми все ще маємо відношення: для якого я зробив два кроки: (1) переміщення назовні, тому що це константа і однією з властивостей підсумовувань є те, що , і (2) переміщення 2 назовні, тому що воно також є постійним і одним із властивостей очікуваних значень є . Тепер ми будемо замінювати

E⁡[Yn]=∑i=1n1nE⁡[2×max(Yi−1,Yn−i)]=2n∑i=1nE⁡[max(Yi−1,Yn−i)]
1n∑ici=c∑iiE⁡[ax]=aE⁡[x]maxфункціонувати з чимось більшим, тому що інакше спростити складно. Якщо ми сперечаємось з негативним , : , тоді: таким чином, що останній крок випливає із спостереження, що для , і і відбувається все шлях до , і , тому коженXYE⁡[max(X,Y)]≤E⁡[max(X,Y)+min(X,Y)]=E⁡[X]+E⁡[Y]
E⁡[Yn]≤2n∑i=1n(E⁡[Yi−1]+E⁡[Yn−i])=2n∑i=0n−12E⁡[Yi]
i=1Yi−1=Y0Yn−i=Yn−1i=nYi−1=Yn−1Yn−i=Y0Y0до з'являється двічі, тому ми можемо замінити всю суму на аналогічну. Хороша новина полягає в тому, що у нас є рецидив ; погана новина полягає в тому, що ми не набагато далі, ніж там, де ми почали.Yn−1E⁡[Yn]≤4n∑i=0n−1E⁡[Yi]

У цей момент CLRS витягує індукційне підтвердження ім'я зі свого ... репертуару математичного досвіду, такого, що включає ідентифікацію вони залишають користувачеві для доказування. Важливим для їх вибору є те, що найбільший його термін - , і нагадаємо, що ми використовуємо експоненціальну висоту таку, що . Можливо, хтось прокоментує, чому саме цей двочлен був обраний. Загальна ідея, однак, пов'язана зверху нашою повторюваністю виразом для деякої постійної .E⁡[Yn]≤14(n+33)∑i=0n−1(i+33)=(n+34)n3Yn=2hnhn=log2⁡n3=3log2⁡n→O(log⁡n)nkk

На закінчення одним вкладишем:

2E⁡[Xn]≤E⁡[Yn]≤4n∑i=0n−1E⁡[Yi]≤14(n+33)=(n+3)(n+2)(n+1)24→E⁡[hn]=O(log⁡n)

WOW.Thanks !!!! Хоча я не знаю про очікувану цінність, цей вид має сенс. Я не робив стриманого курсу математики, перш ніж робити алгоритми. Я опублікую більше коментарів, якщо у мене є сумніви. Дякую, Мербс.
— user1675999

але чому саме експоненціальна висота менше або дорівнює вибраному двочленю? Я досі не розумію, чому ми не можемо вибрати будь-який інший біном з різним найбільшим терміном і робити саме таку математику ... напевно, я дурний, але просто не можу зрозуміти, чому ... і до цього моменту підтверджую має ідеальний сенс, тоді їм просто довелося витягнути щось зовсім із синього і без жодних пояснень сказати нам, що це "доводить" їх права ...
— Зекс

@Zeks Отже, ми можемо вибирати інші двочлени з більшими термінами. Якщо термін все ще є многочленом ( n^k), то висновок такий самий, тому що kв нотації big-O (спосіб 3 був упущений) випадає. Але якби ми замінили щось експоненціальне ( e^n), воно все-таки буде правильною верхньою межею, просто не тісною . Ми знаємо, що очікувана висота є щонайменше логарифмічною, тому визначення того, що вона є не більше логарифмічної, робить її тісною.
— Мербс

@DavidNathan Я не розумію вашого занепокоєння - ви сумніваєтесь, що 1 / n є постійною або що її можна перенести за межі підсумовування? Він, як і константа 2, значною мірою виведений для ілюстративних цілей, щоб спростити решту доказів.
— Мербс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.