Prova che un albero di ricerca binario costruito casualmente ha un'altezza logaritmica


10

Come si dimostra che l'altezza prevista di un albero di ricerca binario creato casualmente con nodi è ? C'è una prova in CLRS Introduzione agli algoritmi (capitolo 12.4), ma non lo capisco.nO(logn)


1
Quale domanda? Quale esempio? Modifica e fornisci tutti i dettagli.
Ran G.

3
Si prega di evitare l'uso di abbreviazioni (come BST) e presumere che la maggior parte di noi non abbia il libro CLRS. Se potessi copiare qui il teorema e spiegare cosa non capisci, otterrai più risposte.
Ran G.

2
Questo dipenderà da come viene costruito l'albero di ricerca binario. (Anche se il risultato non lo è, la prova lo farà.) Alcuni ulteriori dettagli sarebbero utili.
Peter Shor,

Risposte:


21

Pensiamo prima a questo in modo intuitivo. Nel migliore dei casi, l'albero è perfettamente bilanciato; nello scenario peggiore, l'albero è completamente sbilanciato:

Albero di ricerca binario bilanciato in altezzaAlbero di ricerca binario nel caso peggiore

A partire dal nodo radice , questo albero a sinistra ha il doppio del numero di nodi a ciascuna profondità successiva, in modo tale che l'albero abbia n = h i = 0 2 i = 2 h + 1 - 1 nodi e un'altezza h (che è in questo caso 3). Con un po 'di matematica, n 2 h + 1 - 1 h log 2 (pn=Σio=0h2io=2h+1-1h , ovveroaltezza O ( log n ) . Per l'albero completamente sbilanciato, l'altezza dell'albero è semplicemente n - 1 O ( n ) . Quindi abbiamo i nostri limiti.n2h+1-1hlog2(n+1)-1log2nO(logn)n-1O(n)

Se stessimo costruendo un albero bilanciato da un elenco ordinato , sceglieremmo l'elemento centrale come nodo radice. Se invece stiamo costruendo casualmente un albero, è probabile che uno qualsiasi dei n nodi sia raccolto e l'altezza del nostro albero sia: h e i g h t t r e e = 1 + max ( h e i g h t l e , h e i g h t r{1,2,...,n}n Sappiamo che in un albero di ricerca binario, la sottostruttura sinistra deve contenere solo chiavi inferiori al nodo radice. Pertanto, se scegliamo casualmente l'elemento i t h , la sottostruttura sinistra hai-1elementi e la sottostruttura destra han-ielementi, quindi in modo più compatto: h

heioghttree=1+max(heioghtleft SuBtree,heioghtrioght SuBtree)
iothio-1n-io. Da lì, ha senso che se ogni elemento ha la stessa probabilità di essere raccolto, il valore atteso è solo la media di tutti i casi (piuttosto che una media ponderata). Quindi:E[ h n ]= 1hn=1+max(hio-1,hn-io)E[hn]=1nΣio=1n[1+max(hio-1,hn-io)]

Come sono certo che hai notato, mi sono leggermente discostato dal modo in cui CLRS lo dimostra, perché CLRS utilizza due tecniche di prova relativamente comuni che sono sconcertanti per i non iniziati. Il primo è usare esponenti (o logaritmi) di ciò che vogliamo trovare (in questo caso altezza), il che rende la matematica un po 'più chiara; il secondo è usare le funzioni dell'indicatore (che sto per ignorare qui). CLRS definisce l' altezza esponenziale come , quindi la ricorrenza analoga è Y n = 2 × max ( Y iYn=2hnYn=2×max(Yio-1,Yn-io).

Supponendo che l'indipendenza (che ogni disegno di un elemento (tra gli elementi disponibili) sia la radice di una sottostruttura sia indipendente da tutti i disegni precedenti), abbiamo ancora la relazione: per i quali ho eseguito due passaggi: (1) spostando1

E[Yn]=Σio=1n1nE[2×max(Yio-1,Yn-io)]=2nΣio=1nE[max(Yio-1,Yn-io)]
esterno perché è una costante e una delle proprietà delle sommazioni è cheici=ciie (2) spostando il 2 esterno perché è anche una costante e una delle proprietà dei valori previsti èE[ax]=aE[x]. Ora sostituiremo lafunzionemaxcon qualcosa di più grande perché altrimenti semplificare è difficile. Se sosteniamoXnon negativo,Y:E[max(X,Y1nΣiocio=cΣioioE[un'X]=un'E[X]maxXY , quindi: E [ Y n ] 2E[max(X,Y)]E[max(X,Y)+min(X,Y)]=E[X]+E[Y] tale che l'ultimo passaggio segue dall'osservazione che peri=1,Yi-1=Y0eYn-i=Yn-1e andando tutto modo peri=n,Yi-1=Yn
E[Yn]2nΣio=1n(E[Yio-1]+E[Yn-io])=2nΣio=0n-12E[Yio]
io=1Yio-1=Y0Yn-io=Yn-1io=n e Y n -Yio-1=Yn-1 , quindi ogni termine da Y n ] 4Yn-io=Y0 a Y n - 1 appare due volte, quindi possiamo sostituire l'intera somma con una analoga. La buona notizia è che abbiamo una ricorrenza E [Y0Yn-1 ; la cattiva notizia è che non siamo molto più avanti di dove abbiamo iniziato.E[Yn]4nΣio=0n-1E[Yio]

A questo punto, CLRS tira una prova di induzione dal loro ... repertorio di esperienza matematica, uno che include un'identità n - 1 i = 0E[Yn]14(n+33)Σio=0n-1(io+33)=(n+34)n3Yn=2hnhn=log2n3=3log2nO(logn)nKK

2E[Xn]E[Yn]4nΣio=0n-1E[Yio]14(n+33)=(n+3)(n+2)(n+1)24E[hn]=O(logn)

WOW GRAZIE !!!! Anche se non conosco il valore atteso, questo tipo di senso ha senso. Non ho fatto un corso di matematica discreto prima di fare algoritmi. Pubblicherò altri commenti, se avessi qualche dubbio. Grazie Merbs.
user1675999,

ma perché esattamente l'altezza esponenziale è inferiore o uguale al binomio scelto? Continuo a non capire perché non possiamo scegliere nessun altro binomio con un termine diverso e fare esattamente la stessa matematica ... probabilmente sono stupido ma non riesco proprio a capire perché ... e fino a questo punto la prova ha perfettamente senso, quindi hanno dovuto semplicemente estrarre qualcosa completamente dal nulla e senza alcuna spiegazione ci dicono che "prova" che hanno ragione ...
Zeks,

@Zeks Quindi, possiamo scegliere altri binomi con termini più grandi. Se il termine è ancora polinomiale ( n^k), la conclusione è la stessa perché kviene rilasciata nella notazione big-O (il modo 3 è stato eliminato). Ma se sostituissimo con qualcosa di esponenziale ( e^n), sarebbe comunque un limite superiore corretto , ma non stretto . Sappiamo che l'altezza prevista è almeno logaritmica, quindi determinare che sia al massimo logaritmico la rende stretta.
Merbs,

@DavidNathan Non capisco la tua preoccupazione - dubiti che 1 / n sia una costante o che possa essere spostato fuori dalla somma? Come la costante 2, viene in gran parte eliminato a scopo illustrativo, per semplificare la restante dimostrazione.
Merbs,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.