¿Cómo demuestra que la altura esperada de un árbol de búsqueda binario construido aleatoriamente con nodos es ? Hay una prueba en CLRS Introducción a los algoritmos (capítulo 12.4), pero no la entiendo.
data-structures
algorithm-analysis
binary-trees
search-trees
average-case
usuario1675999
fuente
fuente
Respuestas:
Primero pensemos en esto intuitivamente. En el mejor de los casos, el árbol está perfectamente equilibrado; En el peor de los casos, el árbol está completamente desequilibrado:
Como estoy seguro de que has notado, me he desviado ligeramente de cómo CLRS prueba esto, porque CLRS usa dos técnicas de prueba relativamente comunes que son desconcertantes para los no iniciados. El primero es usar exponentes (o logaritmos) de lo que queremos encontrar (en este caso, altura), lo que hace que las matemáticas funcionen un poco más limpiamente; el segundo es usar funciones de indicador (que solo voy a ignorar aquí). CLRS define la altura exponencial como , por lo que la recurrencia análoga es .Yn=2hn Yn=2×max(Yi−1,Yn−i)
Suponiendo que la independencia (que cada sorteo de un elemento (de los elementos disponibles) sea la raíz de un subárbol es independiente de todos los sorteos anteriores), todavía tenemos la relación: para lo cual hice dos pasos: (1) mover el afuera porque es una constante y una de las propiedades de las sumas es que , y (2) mover el 2 afuera porque también es una constante y una de las propiedades de los valores esperados es . Ahora vamos a reemplazar el
En este punto, CLRS extrae una prueba de inducción de su ... repertorio de experiencia matemática, uno que incluye una identidad que dejan que el usuario pruebe. Lo importante de su elección es que su término más grande es , y recuerde que estamos usando una altura exponencial tal que . Quizás alguien comentará por qué se eligió este binomio en particular. Sin embargo, la idea general es vincular desde arriba nuestra recurrencia con una expresión para alguna constante .E[Yn]≤14(n+33) ∑n−1i=0(i+33)=(n+34) n3 Yn=2hn hn=log2n3=3log2n→O(logn) nk k
Para concluir con una línea:
fuente
n^k
), la conclusión es la misma porquek
se elimina en la notación big-O (la forma en que se eliminó 3). Pero si sustituimos en algo exponencial (e^n
), todavía sería un límite superior correcto , pero no uno ajustado . Sabemos que la altura esperada es al menos logarítmica, por lo que determinar que es a lo más logarítmica la hace apretada.