Sunteți pe pagina 1din 15

Teorema maestro

Ir a la navegaciónIr a la búsqueda
En el análisis de algoritmos, el teorema maestro proporciona una solución sencilla en
términos asintóticos (usando una Cota superior asintótica) para ecuaciones de recurrencia que
ocurren en muchos algoritmos recursivos tales como en el Algoritmo divide y vencerás. Fue
popularizado por el libro Introducción a los algoritmos por Cormen, Leiserson, Rivest, y Stein,
en el cual fue tanto introducido como probado formalmente. No todas las ecuaciones de
recurrencia pueden ser resueltas con el uso del teorema maestro.

Índice

• 1Introducción
• 2Forma genérica
o 2.1Caso 1
▪ 2.1.1Forma Genérica
▪ 2.1.2Ejemplo
o 2.2Caso 2
▪ 2.2.1Forma Genérica
▪ 2.2.2Ejemplo
o 2.3Caso 3
▪ 2.3.1Forma Genérica
▪ 2.3.2Ejemplo
• 3Casos Irresolubles
• 4Bibliografía
• 5Véase también
• 6Referencias

Introducción[editar]
Considere un problema que puede ser resuelto a través de un algoritmo recursivo como el
siguiente:

procedimiento T( n : tamaño del problema ) definición:


if n < 1 then exit

Hacer trabajo f(n)

T(n/b)
T(n/b)
...repetir una cantidad de a veces...
T(n/b)
fin procedimiento
En el algoritmo mostrado arriba se divide el problema original en una cantidad menor de
subproblemas de manera recursiva, cada uno de estos subproblemas siendo del tamaño
de n/b. Esto podría ser visualizado como la construcción de un árbol de llamadas al problema,
siendo cada nodo del árbol una instancia recursiva del mismo y sus hijos siendo instancias de
las llamadas subsiguientes. En el ejemplo de arriba, cada nodo tendría un número a de hijos.
Cada nodo hará la cantidad de trabajo correspondiente al tamaño del subproblema n, pasado

a esa instancia en particular, estando la cantidad de trabajo realizado determinado por .


El trabajo total realizado por todas las llamadas del árbol es la suma de los trabajos hechos
por cada uno de los nodos del árbol.
Algoritmos como el descrito arriba pueden ser representados por una relación de

recurrencia como la siguiente: . Esta relación de recurrencia puede ser sucesivamente


sustituida en sí misma y expandida hasta obtener una expresión que represente la cantidad
total de trabajo.1
El teorema maestro nos permite fácilmente calcular el tiempo de ejecución de este tipo de
algoritmos recursivos en notación de Cota superior asintótica, sin la necesidad de hacer la
expansión de las distintas llamadas recursivas.

Forma genérica[editar]
El teorema maestro sirve para resolver relaciones recursivas de la siguiente forma:

En la aplicación de análisis de algoritmos recursivos, las


constantes y funciones toman los siguientes significados:

• n es el tamaño del problema a resolver.


• a es el número de subproblemas en la recursión.
• n/b el tamaño de cada subproblema. (Aquí se asume que
todos los subproblemas tienen el mismo tamaño)
• f (n) es el costo del trabajo hecho fuera de las llamadas
recursivas, que incluye el costo de la división del
problema y el costo de unir las soluciones de los
subproblemas.
Luego, es posible realizar una cota en notación Big O en los
siguientes tres casos:
Caso 1[editar]
Forma Genérica[editar]

Si donde (usando Cota superior asintótica)


entonces:

Ejemplo[editar]
Como puede verse en la fórmula de arriba:

, entonces

, donde
Luego, vemos que se cumple la condición del
caso 1:

.
Luego por el teorema maestro tenemos
que

Caso 2[editar]
Forma Genérica[editar]
Si es verdad que para alguna
constante k ≥ 0, que:

donde
Entonces:

Ejemplo[editar]

Como podemos ver en la


fórmula de arriba, las
variables tienen los
siguientes valores:

donde
Luego,
nos
fijamos
que
cumpla
la
condició
n del
caso 2:

,luego, se cumple que


Ento
nce
s
por
el
seg
und
o
cas
o
del
teor
ema
mae
stro:

D
a
n
d
o
d
e
e
s
a
m
a
n
e
r
a
q
u
e
l
a
r
e
l
a
c
i
ó
n
d
e
r
e
c
u
r
r
e
n
c
i
a
d
e

T
(
n
)
e
s
Θ
(
n

l
o
g

n
)
.
C
a
s
o
3
[
e
d
i
t
a
r
]
F
o
r
m
a
G
e
n
é
r
i
c
a
[
e
d
i
t
a
r
]
S
i
e
s
v
e
r
d
a
d
q
u
e
:

donde
Y
s
i
e
s
v
e
r
d
a
d
a
d
e
m
á
s
q
u
e
:

para alguna constante y suficientemente

grande
E
n
t
o
n
c
e
s
:

E
j
e
m
p
l
o
[
e
d
i
t
a
r
]

C
o
m
o
p
u
e
d
e
v
e
r
s
e
e
n
l
a
f
ó
r
m
u
l
a
d
e
a
r
r
i
b
a
,
l
a
s
v
a
r
i
a
b
l
e
s
o
b
t
i
e
n
e
n
l
o
s
s
i
g
u
i
e
n
t
e
s
v
a
l
o
r
e
s
:

, donde
,y por lo tanto se cumple que,

, eligiendo
a no es una constante; el número de subproblemas debe
ser fijo.

f(n) debe ser polinomial.


a<1 no puede darse el caso de que haya menos de un
subproblema.

f(n) que es el tiempo de trabajo, no puede ser negativo.

Caso 3 pero hay una violación de regularidad.

S-ar putea să vă placă și