Вы находитесь на странице: 1из 4

Teorema maestro

2 Forma genrica

En el anlisis de algoritmos, el teorema maestro proporciona una solucin sencilla en trminos asintticos (usando una Cota superior asinttica) para ecuaciones de recurrencia que ocurren en muchos algoritmos recursivos
tales como en el Algoritmo divide y vencers. Fue popularizado por el libro Introduccin 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.

El teorema maestro sirve para resolver relaciones recursivas de la siguiente forma:

T (n) = a T

(n)
b

+ f (n)

donde a 1, b > 1

En la aplicacin de anlisis de algoritmos recursivos, las


constantes y funciones toman los siguientes signicados:
n es el tamao del problema a resolver.
a es en nmero de subproblemas en la recursin.

Introduccin

n/b el tamao de cada subproblema. (Aqu se asume


que todos los subproblemas tienen el mismo tamao)

Considere un problema que puede ser resuelto a travs de


un algoritmo recursivo como el siguiente:

f (n) es el costo del trabajo hecho fuera de las llamadas recursivas, que incluye el costo de la divisin
del problema y el costo de unir las soluciones de los
subproblemas.

procedimiento T( n : tamao del problema ) denicin:


if n < 1 then exit
Hacer trabajo f(n)
T(n/b) T(n/b) ...repetir una cantidad de a veces... T(n/b) Luego, es posible realizar una cota en notacin Big O en
n procedimiento
los siguientes tres casos:
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 2.1 Caso 1
del tamao de n/b. Esto podra ser visualizado como la
construccin de un rbol de llamadas al problema, sien- 2.1.1 Forma Genrica
do cada nodo del rbol una instancia recursiva del mismo
c
y sus hijos siendo instancias de las llamadas subsiguien- Si f (n) = O (n ) donde c < logb a (usando Cota supetes. En el ejemplo de arriba, cada nodo tendra un n- rior asinttica)
mero a de hijos. Cada nodo har la cantidad de trabajo entonces:
correspondiente al tamao del subproblema n, pasado a
esa instancia en particular, estando la cantidad de trabajo
(
)
realizado determinado por f (n) . El trabajo total realiT (n) = nlogb a
zado 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 represen- 2.1.2 Ejemplo
de recurrencia como la siguiente:
tados por una(relacin
)
T (n) = a T nb + f (n) . Esta relacin de recurrencia
(n)
puede ser sucesivamente sustituida en si misma y expanT
(n)
=
8T
+ 1000n2
dida hasta obtener una expresin que represente la canti2
dad total de trabajo.[1]
Como puede verse en la formula de arriba:
El teorema maestro nos permite fcilmente calcular el
tiempo de ejecucin de este tipo de algoritmos recursivos
a = 8, b = 2, f (n) = 1000n2 , entonces
en notacin de Cota superior asinttica, sin la necesidad
f (n) = O (nc ) , donde c = 2
de hacer la expansin de las distintas llamadas recursivas.
1

3 CASOS IRRESOLUBLES

Luego, vemos que se cumple la condicin del caso 1:

2.3 Caso 3
2.3.1 Forma Genrica

logb a = log2 8 = 3 > c

Si es verdad que:

Luego por el teorema maestro tenemos que


f (n) = (nc ) donde c > logb a
(
)
( )
T (n) = nlogb a = n3

2.2

( )
af nb kf (n) para alguna constante k < 1
y sucientemente grande n

Caso 2

2.2.1

Y si es verdad adems que:

Forma Genrica

Entonces:

Si es verdad que para alguna constante k 0, que:


(

T (n) = (f (n))

f (n) = n log n donde c = logb a


2.3.2 Ejemplo
Entonces:
(

T (n) = nc logk+1 n

T (n) = 2T

(n)
2

+ n2

Como puede verse en la formula de arriba, las variables


obtienen los siguientes valores:
2.2.2

Ejemplo

T (n) = 2T

(n)

+ 10n

a = 2, b = 2, f (n) = n2

2
f (n) = (nc ) , donde c = 2
Como podemos ver en la formula de arriba, las variables
tienen los siguientes valores:
Luego se comprueba que satisface la condicin del caso
3:

a=2
b=2
c=1
f (n) = 10n
(
)
f (n) = nc logk n donde c = 1, k = 0
Luego, nos jamos que cumpla la condicin del caso 2:
logb a = log2 2 = 1 ,luego, se cumple que c =
logb a
Entonces por el segundo caso del teorema maestro:

logb a = log2 2 = 1 ,y por lo tanto se cumple


que, c > logb a
La condicin tambin se cumple:
2

2( n4 ) kn2 , eligiendo k = 1/2


Entonces por el tercer caso del teorema maestro:
( )
T (n) = (f (n)) = n2 .
Por consiguiente la relacin de recurrencia T(n) es in
(n2 ).

3 Casos Irresolubles

(
)
(
)
T (n) = nlogb a logk+1 n = n1 log1 n = (n logLos
n) siguientes casos no pueden ser resueltos a travs de
la utilizacin del teorema maestro:[2]
Dando de esa manera que la relacin de recurrencia de
( )
T (n) = 2n T n2 + nn
T(n) es (n log n).

3
a no es una constante; el nmero de subproblemas debe ser jo.
( )
T (n) = 2T n2 + lognn
f(n) debe ser polinomial.
( )
T (n) = 0.5T n2 + n
a<1 no puede darse el caso de que haya
menos de un subproblema.
( )
T (n) = 64T n8 n2 log n
f(n) que es el tiempo de trabajo, no puede ser negativo.
( )
T (n) = T n2 + n(2 cos n)
Caso 3 pero hay una violacin de regularidad.

Bibliografa
Thomas H. Cormen, Charles E. Leiserson, Ronald
L. Rivest, and Cliord Stein. Introduction to Algorithms, Second Edition. MIT Press and McGrawHill, 2001. ISBN 0-262-03293-7. Sections 4.3 (The
master method) and 4.4 (Proof of the master theorem), pp. 7390.
Michael T. Goodrich and Roberto Tamassia. Algorithm Design: Foundation, Analysis, and Internet
Examples. Wiley, 2002. ISBN 0-471-38365-1. The
master theorem (including the version of Case 2 included here, which is stronger than the one from
CLRS) is on pp. 268-270.

Vase tambin
Ecuacin recurrente

Referencias

[1] Duke University, Big-Oh for Recursive Functions: Recurrence Relations, http://www.cs.duke.edu/~{}ola/ap/
recurrence.html
[2] Massachusetts Institute of Technology (MIT), Master
Theorem: Practice Problems and Solutions, http://www.
csail.mit.edu/~{}thies/6.046-web/master.pdf

7 ORIGEN DEL TEXTO Y LAS IMGENES, COLABORADORES Y LICENCIAS

Origen del texto y las imgenes, colaboradores y licencias

7.1

Texto

Teorema maestro Fuente: https://es.wikipedia.org/wiki/Teorema_maestro?oldid=85777307 Colaboradores: Sabbut, Magister Mathematicae, CEM-bot, JMCC1, Gsrdzl, Maximiliano.curia, SieBot, Tirithel, Deltasubk, Poco a poco, Camilo, MastiBot, Diegusjaimes, Luckas-bot,
Manuelt15, Jkbw, Recurrencia, ZroBot, KLBot2 y Annimos: 13

7.2

Imgenes

7.3

Licencia del contenido

Creative Commons Attribution-Share Alike 3.0

Вам также может понравиться