Prova de que uma árvore de pesquisa binária construída aleatoriamente tem altura logarítmica


10

Como você prova que a altura esperada de uma árvore de pesquisa binária criada aleatoriamente com nós é O (\ log n) ? Há uma prova no CLRS Introduction to Algorithms (capítulo 12.4), mas eu não entendo.nO(log⁡n)


11
Qual questão? Que exemplo? Edite e forneça detalhes completos.
— Ran G.

3
Evite usar abreviações (como BST) e assuma que a maioria de nós não possui o livro do CLRS. Se você puder copiar o teorema aqui e explicar o que é que você não entende, obterá mais respostas.
— Ran G.

2
Isso vai depender de como a árvore de pesquisa binária é construída. (Mesmo que o resultado não aconteça, a prova o fará.) Mais alguns detalhes seriam úteis.
— quer

Respostas:


21

Vamos primeiro pensar sobre isso intuitivamente. No melhor cenário, a árvore está perfeitamente equilibrada; no pior cenário, a árvore está totalmente desequilibrada:

Árvore de pesquisa binária com altura equilibradaÁrvore de pesquisa binária de pior caso

Começando no nó raiz , essa árvore esquerda tem o dobro de nós em cada profundidade subsequente, de forma que a árvore tenha nós e uma altura (que é neste caso 3). Com um pouco de matemática, , ou seja, tem altura. Para a árvore totalmente desequilibrada, a altura da árvore é simplesmente . Então, nós temos nossos limites.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 ⌋ S ( log n ) n - 1 → O ( n )pn=∑i=0h2i=2h+1−1hn≤2h+1−1→h≤⌈log2⁡(n+1)−1⌉≤⌊log2n⌋O(log⁡n)n−1→O(n)

Se estivéssemos construindo uma árvore balanceada a partir de uma lista ordenada , escolheríamos o elemento do meio como nosso nó raiz. Se estivermos construindo uma árvore aleatoriamente, é provável que qualquer um dos nós seja escolhido e a altura da nossa árvore seja: Sabemos que em uma árvore de pesquisa binária, a subárvore esquerda deve conter apenas chaves menores que o nó raiz. Portanto, se escolhermos aleatoriamente o elemento , a subárvore esquerda possui elementos e a subárvore direita possui elementos, de forma mais compacta:{1,2,…,n}n

heighttree=1+max(heightleft subtree,heightright subtree)
ithi−1n−ihn=1+max(hi−1,hn−i). A partir daí, faz sentido que, se cada elemento tiver a mesma probabilidade de ser escolhido, o valor esperado seja apenas a média de todos os casos (em vez de uma média ponderada). Portanto:E⁡[hn]=1n∑i=1n[1+max(hi−1,hn−i)]

Como tenho certeza de que você notou, desviei um pouco de como o CLRS prova isso, porque o CLRS usa duas técnicas de prova relativamente comuns que são desconcertantes para os não iniciados. O primeiro é usar expoentes (ou logaritmos) do que queremos encontrar (neste caso, altura), o que torna a matemática um pouco mais limpa; o segundo é usar funções indicadoras (que vou ignorar aqui). O CLRS define a altura exponencial como , portanto a recorrência análoga é .Yn=2hnYn=2×max(Yi−1,Yn−i)

Supondo que a independência (que cada desenho de um elemento (dentre os elementos disponíveis) seja a raiz de uma subárvore seja independente de todos os desenhos anteriores), ainda temos a relação: para o qual realizei duas etapas: (1) movendo o fora porque é uma constante e uma das propriedades das somas é que , e (2) movendo o 2 para fora porque também é uma constante e uma das propriedades dos valores esperados é . Agora vamos substituir o

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]maxfuncionar com algo maior, porque de outra forma simplificar é difícil. Se argumentarmos por não negativo , : , então: modo que o último passo decorra da observação de que para , e e indo todo o caminho para , e , portanto, cada termoXYE⁡[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=Y0Y0para aparece duas vezes, para que possamos substituir o somatório inteiro por um análogo. A boa notícia é que temos um nome de repetição ; a má notícia é que não estamos muito mais longe do que começamos.Yn−1E⁡[Yn]≤4n∑i=0n−1E⁡[Yi]

Neste ponto, o CLRS extrai um nome de operação prova de indução de seu ... repertório de experiência matemática, um que inclui uma identidade eles deixam para o usuário provar. O que é importante sobre a escolha deles é que seu maior termo é e lembre-se de que estamos usando a altura exponencial que . Talvez alguém comente por que esse binômio em particular foi escolhido. A idéia geral, porém, é ligar acima de nossa recorrência com uma expressão para alguma constante .E⁡[Yn]≤14(n+33)∑i=0n−1(i+33)=(n+34)n3Yn=2hnhn=log2⁡n3=3log2⁡n→O(log⁡n)nkk

Para concluir com um liner:

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.Obrigado !!!! Mesmo que eu não saiba sobre o valor esperado, isso meio que faz sentido. Eu não fiz um curso discreto de matemática antes de fazer algoritmos. Vou postar mais comentários, se tiver alguma dúvida. Obrigado Merbs.
— user1675999

mas por que exatamente a altura exponencial é menor ou igual ao binômio escolhido? Ainda não entendo por que não podemos escolher outro binômio com o maior termo diferente e fazer exatamente a mesma matemática ... provavelmente sou burra, mas não consigo entender o porquê ... e até o momento faz todo o sentido, então eles apenas tiveram que puxar algo completamente do nada e, sem explicação, nos dizem que "prova" que eles estão certos ...
— Zeks

@ Zeks Então, podemos escolher outros binômios com termos maiores. Se o termo ainda for polinomial ( n^k), a conclusão é a mesma, porque a kletra é descartada na notação big-O (a maneira como 3 foi descartada). Mas se substituíssemos por algo exponencial ( e^n), ainda seria um limite superior correto , mas não restrito . Sabemos que a altura esperada é pelo menos logarítmica, portanto, determinar se é no máximo logarítmica torna-a mais estreita.
— Merbs

@DavidNathan Eu não entendo sua preocupação - você está duvidando que 1 / n seja uma constante ou que possa ser movido para fora do somatório? Como a constante 2, é amplamente retirada para fins ilustrativos, para simplificar a prova restante.
— Merbs
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.