Está en la página 1de 9

Arturo Díaz Pérez

Análisis y Diseño de Algoritmos

Teorema Maestro
Arturo Díaz Pérez

Análisis y Diseño de Algoritmos Maestro-1

Introducción

F Recurrencia general para estrategias divide y vencerás

T (1) = 1
T (n) = aT ( nb ) + d (n)

Análisis y Diseño de Algoritmos Maestro-2

Análisis y Complejidad de Algoritmos 1


Arturo Díaz Pérez

Teorema Maestro
F Sean a ≥ 1 y b ≥ 1 constantes, sea d(n) una función y sea
T(n) definido en los enteros no negativos por la
recurrencia
T (n) = aT ( nb ) + d (n )
T(n) puede ser acotado asintóticamente como sigue:
1 Si d(n) = O(nlogba-ε) para alguna constante ε > 0,
entonces, T(n) = Θ(nlogba).
2 Si d(n) = Θ(nlogba), entonces, T(n) = Θ(nlogbalgn).
3 Si d(n) = Ω(nlogba+ε) para alguna constante ε > 0 y si
ad(n/b) ≤ cd(n) para alguna constante c < 1 y todas las n
suficientemente grandes, entonces, T(n) = Θ(d(n)).
Análisis y Diseño de Algoritmos Maestro-3

Observaciones (1)
F d(n) no solo tiene que ser menor que nlogba, debe ser
polinomialmente menor.
ß Esto es, d(n) debe ser asintóticamente menor que nlogba por un
factor de nε para alguna constante ε > 0.

F d(n) no solo tiene que ser mayor que nlogba, debe ser
polinomialmente mayor y además satistacer la condición
de regularidad:
ß ad(n/b) ≤ cd(n) para alguna constante c < 1 y todas las n ≥ n0.

F Si las dos funciones son del mismo orden, se multiplica


por un factor logarítmico y la solución es
T(n)=Θ(nlogbalogn).
Análisis y Diseño de Algoritmos Maestro-4

Análisis y Complejidad de Algoritmos 2


Arturo Díaz Pérez

Observaciones (2)
F Los casos anteriores no cubren todos los casos para d(n).

F Hay un hueco entre los casos 1 y 2 cuando d(n) es


menor pero no polinomialmente menor que nlogba.

F Hay un hueco entre los casos 2 y 3 cuando d(n) es


mayor pero no polinomialmente mayor que nlogba.

Análisis y Diseño de Algoritmos Maestro-5

Ejemplos (1)
F Sea T(n) = 9T(n/3) + n.
ß a = 9, b = 3, d(n) = n
ß nlogba = nlog39 = Θ(n2)

ß Ya que d(n) = O(nlog39-ε), para ε = 1, se puede aplicar el Caso 1


ß Por lo tanto, T(n) = Θ(n2).
F Sea T(n) = T(2n/3) + 1.
ß a = 1, b = 3, d(n) = 1
ß nlogba = nlog3/21 = n0 = 1

ß Ya que d(n) = Θ(nlog3/21), se puede aplicar el Caso 2


ß Por lo tanto, T(n) = Θ(lgn).

Análisis y Diseño de Algoritmos Maestro-6

Análisis y Complejidad de Algoritmos 3


Arturo Díaz Pérez

Ejemplos (2)
F Sea T(n) = 3T(n/4) + nlgn.
ß a = 3, b = 4, d(n) = nlgn
ß nlogba = nlog43 = Ο(n0.793)

ß Ya que d(n) = Ω(nlog43+ε), para ε ≈ 0.2, se puede aplicar el Caso 3


si se muestra que la condición de regularidad se presenta para
d(n).
ß Para un n suficientemente grande ad(n/b) = 3(n/4)lg(n/4) ≤
(3/4)nlgn = cd(n) , para c = 3/4.
ß Por lo tanto, T(n) = Θ(nlgn).

Análisis y Diseño de Algoritmos Maestro-7

Ejemplos (3)
F Sea T(n) = 2T(n/2) + nlgn.
ß a = 2, b = 2, d(n) = nlgn
ß nlogba = nlog22 = n

ß Ya que d(n) = nlgn es asintóticamente más grande que n, se


puede suponer que el Caso 3 se aplica.
ß Sin embargo, nlgn no es asintóticamente polinomialmente más
grande que n.
ß El cociente d(n) = nlogba = nlgn/n = lgn es asintóticamente menor
que nε, para cualquier constante positiva ε.

ß Así, esta recurrencia cae en el hueco entre los Casos 2 y 3.

Análisis y Diseño de Algoritmos Maestro-8

Análisis y Complejidad de Algoritmos 4


Arturo Díaz Pérez

Lema 1
F Sea
Θ(1) si n = 1
T ( n) = 
aT ( b ) + d ( n ) si ∃k : n = b
n k

entonces,
log b n −1
 n
T ( n) = Θ( n logb a ) + ∑j =0
a jd j 
b 

Demostración. Ya se hizo en las notas anteriores.


Láminas Análisis-(24-26)

Análisis y Diseño de Algoritmos Maestro-9

Lema 2
F Sean a ≥ 1 y b ≥ 1 constantes y sea d(n) una función no
negativa definida sobre las potencias exactas de b. La
función g
log b n −1
 n
g( n) = ∑j =0
a jd j 
b 

puede ser acotado asintóticamente como sigue:

1 Si d(n) = O(nlogba-ε) para alguna constante ε > 0,


entonces, g(n) = Ο(nlogba).
2 Si d(n) = Θ(nlogba), entonces, g(n) = Θ(nlogbalgn).
3 Si ad(n/b) ≤ cd(n) para alguna constante c < 1 y para n ≥b,
entonces, g(n) = Θ(d(n)).
Análisis y Diseño de Algoritmos Maestro-10

Análisis y Complejidad de Algoritmos 5


Arturo Díaz Pérez

Demostración Caso 1
F Si d(n) = O(nlogba-ε), entonces, d(n/bi) = O((n/bi)logba-ε)
 logb n −1  n
log b a −ε

g ( n) = O ∑ a j d  j  
 j =0  b  
 
log b a −ε j
log b n −1
 n
log b n −1
 abε 
∑ a d j 
j

b 
=n log b a −ε
∑  log b a 
j =0 j =0 b 
log b n −1
= n log b a −ε ∑ (b
j =0
ε
)j

 (bε ) logb n − 1
= n logb a −ε  ε 
 b −1 
 n ε − 1
= n logb a −ε  ε 
Análisis y Diseño de Algoritmos  b − 1 Maestro-11

Demostración Caso 1 (cont.)

log b a −ε
log a −ε  n − 1 
log b n −1 ε
 n
∑j =0
a d j 
j

b 
= n b  ε
 b − 1

F Ya que b y ε son constantes

g (n) = n logb a −ε O( nε ) = O(n logb a )

Análisis y Diseño de Algoritmos Maestro-12

Análisis y Complejidad de Algoritmos 6


Arturo Díaz Pérez

Demostración Caso 2
F Si d(n) = Θ(nlogba), entonces, d(n/bi) = Θ((n/bi)logba)
 logb n−1  n  logb a 
g ( n ) = Θ ∑ a j  j  
 j =0  b  
 
log b n −1 log b a log b n −1 j
 n  a 
∑j =0
a  j
j

b 
=n log b a
∑j =0
 log b a 
b 
log b n −1
= n logb a ∑1
j =0

= n logb a log b n , por lo tanto

g (n) = Θ( n logb a log b n) = Θ( n logb a lg n)


Análisis y Diseño de Algoritmos Maestro-13

Demostración Caso 3
F Dado que ad(n/b) ≤ cd(n) para alguna constante c < 1 y
para n ≥b, e, se tiene que, ajd(n/bj) ≤ cjd(n).
log b n −1 log b a
 n
g (n) = ∑
j =0
a jd j 
b 
log b n −1
g (n) ≤ ∑ c d (n)
j =0
j


g (n) ≤ d ( n)∑ c j
j =0
1
= d ( n) , por lo tanto
1− c

g (n) = O ( d ( n)) , de aquí, ya que c es constante


g (n) = Θ( d ( n))
Análisis y Diseño de Algoritmos Maestro-14

Análisis y Complejidad de Algoritmos 7


Arturo Díaz Pérez

Lema 3
F Sean a ≥ 1 y b ≥ 1 constantes, sea d(n) una función y sea
T(n) definido en los enteros no negativos potencias de b
por la recurrencia
T (n) = aT ( nb ) + d (n )
T(n) puede ser acotado asintóticamente como sigue:
1 Si d(n) = O(nlogba-ε) para alguna constante ε > 0,
entonces, T(n) = Θ(nlogba).
2 Si d(n) = Θ(nlogba), entonces, T(n) = Θ(nlogbalgn).
3 Si d(n) = Ω(nlogba+ε) para alguna constante ε > 0 y si
ad(n/b) ≤ cd(n) para alguna constante c < 1 y todas las n
suficientemente grandes, entonces, T(n) = Θ(d(n)).
Análisis y Diseño de Algoritmos Maestro-15

Demostración Lema 3
F Por el Lema 1
log b n −1
 n
T ( n) = Θ( n logb a ) + ∑j =0
a jd j 
b 
F Por el Lema 2
F Caso 1
T (n) = Θ( n logb a ) + O ( n logb a ) =Θ( n logb a )
F Caso 2
T (n) = Θ( n logb a ) + Θ( n logb a lg n ) =Θ( n logb a lg n )

F Caso 3
T (n) = Θ( n logb a ) + Θ( d ( n ))
ß pero d(n) = Ω(nlogba+ε) , por lo tanto
T (n ) = Θ( d ( n ))
Análisis y Diseño de Algoritmos Maestro-16

Análisis y Complejidad de Algoritmos 8


Arturo Díaz Pérez

Observación al Lema 3
F El Lema 3 es válido únicamente cuando n es una
potencia exacta de b.

F Tarea. Demostrar que el Teorema Maestro es válido para


cuando n no es necesariamente un potencia de b.
ß Cormen et al. págs. 70-72.

Análisis y Diseño de Algoritmos Maestro-17

Análisis y Complejidad de Algoritmos 9

También podría gustarte