Prueba de que un árbol de búsqueda binario construido aleatoriamente tiene altura logarítmica

10

¿Cómo demuestra que la altura esperada de un árbol de búsqueda binario construido aleatoriamente con n nodos es O(logn) ? Hay una prueba en CLRS Introducción a los algoritmos (capítulo 12.4), pero no la entiendo.

usuario1675999
fuente
1
¿Cual pregunta? Que ejemplo Por favor edita y da todos los detalles.
Ran G.
3
Evite el uso de abreviaturas (como BST) y suponga que la mayoría de nosotros no tenemos el libro CLRS. Si pudieras copiar el teorema aquí y explicar qué es lo que no entiendes, obtendrás más respuestas.
Ran G.
2
Esto dependerá de cómo se construya el árbol de búsqueda binario. (Incluso si el resultado no lo hace, la prueba lo hará). Algunos detalles más serían útiles.
Peter Shor

Respuestas:

21

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:

Árbol de búsqueda binaria de altura equilibradaÁrbol de búsqueda binaria en el peor de los casos

pn=i=0h2i=2h+11h , lo que quiere decir que tiene unaaltura O ( log n ) . Para el árbol completamente desequilibrado, la altura del árbol es simplemente n - 1 O ( n ) . Entonces tenemos nuestros límites.n2h+11hlog2(n+1)1log2nO(logn)n1O(n)

{1,2,,n}n

heighttree=1+max(heightleft subtree,heightright subtree)
ithi1elementos y el subárbol derecho tiene elementos , de manera más compacta: . A partir de ahí, tiene sentido que si cada elemento tiene la misma probabilidad de ser elegido, el valor esperado es solo el promedio de todos los casos (en lugar de un promedio ponderado). Por lo tanto:nihn=1+max(hi1,hni)E[hn]=1ni=1n[1+max(hi1,hni)]

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=2hnYn=2×max(Yi1,Yni)

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

E[Yn]=i=1n1nE[2×max(Yi1,Yni)]=2ni=1nE[max(Yi1,Yni)]
1nici=ciiE[ax]=aE[x]maxfuncionar con algo más grande porque, de lo contrario, simplificar es difícil. Si argumentamos por , no negativo : , luego: tal que el último paso se desprende de la observación de que para , e y va todo camino hacia , e , entonces cada términoXYE[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=Y0Y0a aparece dos veces, por lo que podemos reemplazar toda la suma por una análoga. La buena noticia es que tenemos una recurrencia ; La mala noticia es que no estamos mucho más allá de donde comenzamos.Yn1E[Yn]4ni=0n1E[Yi]

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)i=0n1(i+33)=(n+34)n3Yn=2hnhn=log2n3=3log2nO(logn)nkk

Para concluir con una línea:

2E[Xn]E[Yn]4ni=0n1E[Yi]14(n+33)=(n+3)(n+2)(n+1)24E[hn]=O(logn)
Merbs
fuente
WOW GRACIAS !!!! Aunque no sé sobre el valor esperado, esto tiene sentido. No hice un curso discreto de matemáticas antes de hacer algoritmos. Publicaré más comentarios, si tengo alguna duda. Gracias merbs.
user1675999
pero ¿por qué exactamente la altura exponencial es menor o igual que el binomio elegido? Todavía no entiendo por qué no podemos elegir otro binomio con un término más grande diferente y hacer exactamente las mismas matemáticas ... probablemente soy estúpido, pero simplemente no puedo ver por qué ... y hasta este momento prueba tiene mucho sentido, entonces simplemente tuvieron que sacar algo completamente de la nada y sin ninguna explicación nos dicen que "prueba" que
tenían
@Zeks Entonces, podemos elegir otros binomios con términos más grandes. Si el término sigue siendo polinomial ( n^k), la conclusión es la misma porque kse 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.
Merbs
@DavidNathan No entiendo su preocupación: ¿duda de que 1 / n sea una constante o de que se pueda mover fuera de la suma? Al igual que la constante 2, se saca en gran medida con fines ilustrativos, para simplificar la prueba restante.
Merbs