Teorema maestro (análisis de algoritmos)
En el análisis de algoritmos, el teorema maestro para las recurrencias de divide y vencerás proporciona un análisis asintótico (usando la notación O grande) para relaciones de recurrencia de tipos que ocurren en el análisis de muchas divisiones y conquistar algoritmos. El enfoque fue presentado por primera vez por Jon Bentley, Dorothea Blostein (de soltera Haken) y James B. Saxe en 1980, donde se describió como un "método unificador" para solucionar este tipo de recurrencias. El nombre "teorema maestro" fue popularizado por el libro de texto de algoritmos ampliamente utilizado Introducción a los algoritmos de Cormen, Leiserson, Rivest y Stein.
No todas las relaciones de recurrencia se pueden resolver con el uso de este teorema; sus generalizaciones incluyen el método Akra-Bazzi.
Introducción
Considere un problema que se puede resolver utilizando un algoritmo recursivo como el siguiente:
procedimiento p(input) x de tamaño n): si n Identificar una constante k: Solve x directamente sin recursión más: Crear a subproblemas de x, cada uno tiene tamaño n/bProcedimiento de llamada p recursivamente en cada subproblema Combine los resultados de los subproblemas

El algoritmo anterior divide el problema en una serie de subproblemas recursivamente, cada subproblema de tamaño n/b. Su árbol de solución tiene un nodo para cada llamada recursiva, siendo los niños de ese nodo las otras llamadas hechas de esa llamada. Las hojas del árbol son los casos de base de la recursión, los subproblemas (de tamaño inferior a kEso no se repite. El ejemplo anterior habría tenido a Nodos infantiles en cada nodo sin hojas. Cada nodo hace una cantidad de trabajo que corresponde al tamaño del subproblema n pasó a esa instancia de la llamada recursiva y dada por . La cantidad total de trabajo realizado por todo el algoritmo es la suma del trabajo realizado por todos los nodos del árbol.
El tiempo de funcionamiento de un algoritmo como el p arriba en una entrada de tamaño n, generalmente denotado , se puede expresar por la relación de recurrencia
Donde es el momento de crear los subproblemas y combinar sus resultados en el procedimiento anterior. Esta ecuación puede sustituirse sucesivamente en sí misma y ampliarse para obtener una expresión de la cantidad total de trabajo realizado. El teorema maestro permite que muchas relaciones de recurrencia de esta forma se conviertan directamente a la anotación, sin hacer una expansión de la relación recursiva.
Forma genérica
El teorema maestro siempre produce ligaduras asintomáticamente ajustadas a recurrencias de algoritmos de división y conquista que dividen una entrada en subproblemas más pequeños de tamaños iguales, resuelven los subproblemas recursivamente, y luego combinan las soluciones de subproblema para dar una solución al problema original. El tiempo para tal algoritmo se puede expresar agregando el trabajo que realizan en el nivel superior de su recursión (para dividir los problemas en subproblemas y luego combinar las soluciones de subproblema) junto con el tiempo hecho en las llamadas recursivas del algoritmo. Si denota el tiempo total para el algoritmo en una entrada de tamaño , y denota la cantidad de tiempo tomado en el nivel superior de la recurrencia entonces el tiempo puede ser expresado por una relación recurrencia que toma el formulario:
Aquí. es el tamaño de un problema de entrada, es el número de subproblemas en la recursión, y es el factor por el cual el tamaño del subproblema se reduce en cada llamada recursiva (b título1). Curiosamente, y no debe depender de . El teorema de abajo también supone que, como caso base para la recurrencia, cuando es menos que un límite , el tamaño de entrada más pequeño que conducirá a una llamada recursiva.
Las repeticiones de esta forma a menudo satisfacen uno de los tres siguientes regímenes, basados en cómo el trabajo para dividir/recombinar el problema relacionados con exponente crítico . (La tabla de abajo utiliza la notación O grande estándar).
Caso | Descripción | Estado en relación con , es decir. | Maestro Teorema | Ejemplos notables |
---|---|---|---|---|
1 | Trabajar para dividir/recombinar un problema está encadenado por subproblemas.
i.e. the recursion tree is leaf-heavy | Cuando Donde (Arribado por un polinomio menos exponente) | Entonces... (El término de división no aparece; la estructura del árbol recurrente domina.) | Si y , entonces . |
2 | Trabajar para dividir/recombinar un problema es comparable a los subproblemas. | Cuando para un (recorrido por el polinomio de costos críticos, tiempos cero o más opcionales s) | Entonces... (El límite es el término de división, donde el tronco es aumentado por una sola potencia.) | Si y , entonces .
Si y , entonces . |
3 | Trabajar para dividir/recombinar un problema domina subproblemas.
Es decir, el árbol de la recursión es arraigado. | Cuando Donde (más bajo contenido por un polinomio de mayor crecimiento) | ... esto no produce necesariamente nada. Además, si
entonces el total está dominado por el término de división : | Si y y la condición de regularidad sostiene, entonces . |
Una extensión útil de Case 2 maneja todos los valores de :
Caso | Estado en relación con , es decir. | Maestro Teorema | Ejemplos notables |
---|---|---|---|
2a | Cuando para cualquier | Entonces... (El límite es el término de división, donde el tronco es aumentado por una sola potencia.) | Si y , entonces . |
2b | Cuando para | Entonces... (El límite es el término de división, donde el log reciprocal es reemplazado por un tronco iterado.) | Si y , entonces . |
2c | Cuando para cualquier | Entonces... (El límite es el término de división, donde el tronco desaparece.) | Si y , entonces . |
Ejemplos
Ejemplo del caso 1
Como se puede ver en la fórmula anterior:
- Así que
- , donde
A continuación, vemos si cumplimos la condición del caso 1:
- .
Se deduce del primer caso del teorema maestro que
(Este resultado es confirmado por la solución exacta de la relación de recurrencia, que es , suponiendo ).
Ejemplo de caso 2
Como podemos ver en la fórmula anterior, las variables obtienen los siguientes valores:
- Donde
A continuación, vemos si cumplimos la condición del caso 2:
- , y por lo tanto, c y son iguales
Así que sigue del segundo caso del teorema maestro:
Así la relación de recurrencia dada estaba dentro .
(Este resultado es confirmado por la solución exacta de la relación de recurrencia, que es , suponiendo ).
Ejemplo 3
Como podemos ver en la fórmula anterior, las variables obtienen los siguientes valores:
- , donde
A continuación, vemos si satisfacemos el caso 3 condición:
- , y por lo tanto, sí,
La condición de regularidad también se cumple:
- , elegir
Así se deduce del tercer caso del teorema maestro:
Así la relación de recurrencia dada estaba dentro , que cumple con el de la fórmula original.
(Este resultado es confirmado por la solución exacta de la relación de recurrencia, que es , suponiendo .)
Ecuaciones inadmisibles
Las siguientes ecuaciones no se pueden resolver utilizando el teorema maestro:
- a no es una constante; el número de subproblemas debe ser fijo
- diferencia no polinómica entre y (véase infra; versión ampliada se aplica)
- no puede tener menos de un sub problema
- , que es el tiempo de combinación, no es positivo
- caso 3 pero violación de la regularidad.
En el segundo ejemplo inadmisible anterior, la diferencia entre y se puede expresar con la relación . Está claro que para cualquier constante . Por lo tanto, la diferencia no es polinomio y la forma básica del Teorema Maestro no se aplica. La forma extendida (caso 2b) se aplica, dando la solución .
Aplicación a algoritmos comunes
Algoritm | Relación de repetición | Hora de correr | Comentario |
---|---|---|---|
Búsqueda binaria | Apply Master theorem case , donde | ||
Traversal de árbol binario | Apply Master theorem case Donde | ||
Búsqueda óptima de matriz clasificada | Aplica el teorema Akra–Bazzi para y para llegar | ||
Merge tipo | Apply Master theorem case , donde |
Contenido relacionado
Conjunto vacío
Precisión y exactitud
Historia de la lógica