Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein (2ª edición, 2001) prueban los tres casos del Teorema maestro a los que se refiere en la Introducción a los algoritmos .
Se observa correctamente que la recurrencia en cuestión se encuentra entre el Caso 2 y el Caso 3. Es decir, crece más rápido que pero más lento que para cualquier .f(n)=nlognnn1+εε>0
Sin embargo, el teorema puede generalizarse para cubrir esta recurrencia. Considerar
Caso 2A:
Considere para algunos .f(n)=Θ(nlogbalogkbn)k≥0
Este caso se reduce al caso 2 cuando . Es intuitivamente claro que a lo largo de cada rama del árbol de recurrencia se agrega veces. Un bosquejo de una prueba más formal se puede encontrar a continuación. El resultado final es quek=0f(x)Θ(logbn)
T(n)=Θ(nlogbalogk+1bn)
.
En la Introducción a los algoritmos, esta afirmación se deja como un ejercicio.
Aplicando esta declaración a la recurrencia en cuestión, finalmente obtenemos
T(n)=Θ(n⋅log2n).
Se pueden encontrar más detalles sobre el teorema maestro en la excelente (en mi humilde opinión) página de Wikipedia .
Como @sdcvvc señala en los comentarios para demostrar que el Caso 3 no se aplica aquí, se puede invocar la regla de L'Hospital que dice que
para cualquier función y diferenciable en la vecindad de . Aplicando esto a y se puede demostrar que
limx→cf(x)g(x)=limx→cf′(x)g′(x)
f(x)g(x)cf(n)=nlogng(n)=n1+εlogn∉Θ(n1+ε).
Boceto de la prueba del teorema maestro para el caso 2A.
Esta es una reproducción de partes de la prueba de Introducción a los algoritmos con las modificaciones necesarias .
Primero probamos el siguiente Lema.
Lema A:
Considere una función
dondeEntonces
g(n)=∑j=0logbn−1ajh(n/bj)
h(n)=nlogbalogkbn.g(n)=nlogbalogk+1bn.
Prueba:
Sustituyendo en la expresión por se puede obtener
h(n)g(n)
g(n)=nlogbalogkbn∑j=0logbn−1(ablogba)j=nlogbalogk+1bn.
QED
Si es una potencia exacta de dada una recurrencia
se puede reescribir como
Sustituyendo con , moviendo afuera y aplicando Lemma A obtenemosnb
T(n)=aT(n/b)+f(n),T(1)=Θ(1)
T(n)=Θ(nlogba)+∑j=0logbn−1ajT(n/bj).
f(n)Θ(nlogbalogkbn)Θ
T(n)=Θ(nlogbalogk+1bn).
Generalizar esto a un entero arbitrario que no es una potencia de está más allá del alcance de esta publicación.nb