¿Qué es una explicación intuitiva del teorema maestro?

El teorema maestro nos permite calcular el tiempo de ejecución asintótico para algoritmos de divide y vencerás que dividen cada problema en subproblemas [matemáticos] a [/ matemáticos] donde cada subproblema es [matemático] b [/ matemático] veces más pequeño que el original problema. Además, en cada iteración, se realiza una cantidad adicional de trabajo igual a [math] f (n) [/ math].

Entonces nuestra recurrencia es: [matemáticas] T (n) = a \, T (n / b) + f (n) [/ matemáticas]

Para comprender esto intuitivamente, imagine la estructura de árbol de las llamadas recursivas, con todo el problema en la raíz, y sus subproblemas inmediatos como sus hijos, y así sucesivamente. Observe que [matemáticas] f (n) [/ matemáticas] es la cantidad de trabajo realizado en el primer nivel, [matemáticas] af (n / b) [/ matemáticas] es la cantidad de trabajo realizado en el segundo nivel, [matemáticas ] a ^ 2 f (n / b ^ 2) [/ math] es la cantidad de trabajo realizado en el tercer nivel, y así sucesivamente.

Las palabras en negrita a continuación resaltan la intuición. El resto es solo álgebra.

Hay tres casos:

Caso 1: [matemática] f (n) = O (n ^ c) [/ matemática] donde [matemática] c 1 [/ matemáticas].

Si [matemática] f (n) = O (n ^ c) [/ matemática], la cantidad de trabajo realizado en el i-ésimo nivel es [matemática] a ^ i O ((n / b ^ i) ^ c) [/ matemática], o [matemática] O ((a / b ^ c) ^ kn ^ c) [/ matemática]. Como [matemática] a / b ^ c> 1 [/ matemática], esto significa que la cantidad de trabajo realizado en cada nivel más allá del primero aumenta geométricamente o más rápido. Por lo tanto, aproximadamente una fracción constante del trabajo se realiza en el nivel más bajo . Hay aproximadamente [math] \ log_b n [/ math] niveles, por lo que el nivel más bajo tiene aproximadamente [math] a ^ {\ log_b n} = n ^ {\ log_b a} [/ math] nodos. Por lo tanto, el trabajo total realizado es sobre [matemáticas] f (1) n ^ {\ log_b a} = \ Theta (n ^ {\ log_b a}) [/ matemáticas].

Caso 2: [matemática] f (n) = \ Theta (n ^ c \ log ^ kn) [/ matemática] donde [matemática] c = \ log_b a [/ matemática]. Esto significa que [matemáticas] a / b ^ c = 1 [/ matemáticas]. Primero consideremos qué sucede si [math] k = 0 [/ math]. Entonces, la cantidad de trabajo realizado en cada nivel es [matemática] O ((a / b ^ c) ^ kn ^ c) = O (n ^ c) [/ matemática]; que es independiente del nivel . La cantidad de trabajo realizado en cada nivel es aproximadamente la misma . Entonces, el trabajo total es simplemente el número de niveles multiplicado por el trabajo realizado en el primer nivel , [matemáticas] T (n) = \ Theta (f (n) \ log_b n) = \ Theta (n ^ c \ log n) [ /mates].

Ahora, ¿qué pasa si [matemáticas] k> 0 [/ matemáticas]? Luego, la cantidad de trabajo realizado en el i-ésimo nivel se modifica ligeramente a [matemática] \ Theta (n ^ c \ log ^ k (n / b ^ i)) [/ matemática] por lo que ya no es realmente constante; cae alométricamente a medida que profundizas (es decir, como una ley de poder). Puede verificar aproximando la suma como una integral que la cantidad promedio de trabajo realizado por nivel es una fracción constante (constante wrt [matemática] n [/ matemática], es decir) de la cantidad de trabajo realizado en el primer nivel . Por lo tanto, el trabajo total es nuevamente [matemática] T (n) = \ Theta (f (n) \ log_b n) = \ Theta (n ^ c \ log ^ {k + 1} n) [/ math].

Caso 3: [matemática] f (n) = \ Omega (n ^ c) [/ matemática] donde [matemática] c> \ log_b a [/ matemática]; más una condición de regularidad adicional. Esto es equivalente a [matemáticas] a / b ^ c <1 [/ matemáticas]. Por el mismo razonamiento que en el caso 1, la cantidad de trabajo realizado en el nivel i es [matemática] \ Omega ((a / b ^ c) ^ kn ^ c) [/ matemática], por lo que la cantidad de trabajo realizado en cada el nivel disminuye geométricamente o más rápido a medida que baja. Por lo tanto, aproximadamente una fracción constante del trabajo se realiza en el nivel más alto . Por lo tanto, [math] T (n) = \ Theta (f (n)) [/ math].

La condición de regularidad garantiza que la cantidad de trabajo realizado en cada nivel realmente disminuya geométricamente, al prohibir las funciones de mal comportamiento [matemática] f [/ matemática] que oscilan enormemente para [matemática] n [/ matemática] arbitrariamente grande.

La respuesta de Brian es muy completa. Pero déjame darte una versión menos formal y quizás más “emocionante” de la respuesta.

Hay dos términos en el teorema maestro: el término [matemática] a T (n / b) [/ matemática] y el término [matemática] f (n) [/ matemática]. Representan dos fuerzas opuestas en un proceso recursivo.

1. El paso de división: el término [matemática] a T (n / b) [/ matemática] intenta desesperadamente reproducirse, multiplicando copias cada vez más pequeñas de sí mismo
2. El paso Conquista: el término [matemática] f (n) [/ matemática] representa la fusión: tratando desesperadamente de colapsar estos mini-Mes juntos.

Quién ganará ? El primer caso ([math] af (n / b)> cf (n) [/ math] es cuando gana el paso de división y, por lo tanto, el costo es controlado por él. El segundo caso es cuando gana la fusión y el costo está controlado por él. Por supuesto, podrían coincidir de manera uniforme, por lo que solo debes pagar la cantidad de rondas de batalla antes de que se agoten entre sí ([math] log_b a [/ math].

La mayoría de las veces, si obtiene una recurrencia que parece que podría aplicarse el Teorema Maestro, observar estos dos términos le dará una idea de cuál es la respuesta correcta, al decidir cuál “ganará”.

Hay casos extremos en los que el teorema maestro ni siquiera se aplica, pero es por eso que esta es una explicación intuitiva , no rigurosa :).

More Interesting

¿Cuál es el mejor menor para una especialización en informática? ¿Un menor le dará una 'ventaja' en la fuerza laboral?

¿Qué significa una garantía teórica en el aprendizaje automático?

¿Qué especialidad de pregrado debo elegir si quiero aplicar inteligencia artificial a los campos médicos?

Estoy interesado en algoritmos. Planeo hacer una maestría en informática teórica en una de las 20 mejores universidades. ¿Cuán significativamente ayudará a hacerme digno de la industria?

¿Cuál sería la relación más efectiva entre las matemáticas y la programación en educación?

Estoy en mi último año como estudiante de ciencias de la computación y me encanta resolver problemas. Siempre trato de resolver los problemas, pero no logro crear soluciones rápidamente. Quiero mejorar para construir una lógica clara. ¿Dónde me estoy equivocando o qué debo hacer?

Cómo hacer una forma generalizada a partir de un conjunto dado de expresiones (pasos / algoritmo de deseo)

¿Qué habilidades matemáticas te ayudarán a prepararte para obtener un título en ciencias de la computación?

¿Cuándo no se puede usar el combinador Y para definir la recursividad en el cálculo lambda?

¿Cuáles son los tiempos de ejecución de varios algoritmos de aprendizaje automático como SVM, redes neuronales, etc. en términos de notación big-O?

¿La informática es matemática aplicada?

Cómo reducir el problema del camino hamiltoniano al ciclo hamiltoniano (para demostrar que este último es NP-completo)

¿A qué escuela debo asistir para un programa de posgrado de matemáticas: Stony Brook o UIUC?

¿La mayoría de los cursos requeridos en un programa universitario de ciencias de la computación son inútiles para la aplicabilidad de trabajo de programador del mundo real?

Regresión logística, función softmax. ¿Por qué utiliza la función exponencial en la función sigmoidea?