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(logn)

user1675999
fonte
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+11hn2h+11hlog2(n+1)1log2nO(logn)n1O(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)
ithi1nihn=1+max(hi1,hni). 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]=1ni=1n[1+max(hi1,hni)]

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(Yi1,Yni)

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(Yi1,Yni)]=2ni=1nE[max(Yi1,Yni)]
1nici=ciiE[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]2ni=1n(E[Yi1]+E[Yni])=2ni=0n12E[Yi]
i=1Yi1=Y0Yni=Yn1i=nYi1=Yn1Yni=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.Yn1E[Yn]4ni=0n1E[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=0n1(i+33)=(n+34)n3Yn=2hnhn=log2n3=3log2nO(logn)nkk

Para concluir com um liner:

2E[Xn]E[Yn]4ni=0n1E[Yi]14(n+33)=(n+3)(n+2)(n+1)24E[hn]=O(logn)
Merbs
fonte
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