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.
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.
Respostas:
Vamos primeiro pensar sobre isso intuitivamente. No melhor cenário, a árvore está perfeitamente equilibrada; no pior cenário, a árvore está totalmente desequilibrada:
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 )
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:
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 é .
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
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 .
Para concluir com um liner:
n^k
), a conclusão é a mesma, porque a k
letra é 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.