El Teorema Maestro

Anuncio
Arturo Díaz Pérez
Análisis y Diseño de Algoritmos
Teorema Maestro
Arturo Díaz Pérez
Maestro-1
Análisis y Diseño de Algoritmos
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
Análisis y Complejidad de Algoritmos
Maestro-2
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
Análisis y Complejidad de Algoritmos
Maestro-4
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
Análisis y Complejidad de Algoritmos
Maestro-6
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
Análisis y Complejidad de Algoritmos
Maestro-8
4
Arturo Díaz Pérez
Lema 1
F Sea
si n = 1
Θ(1)
T ( n) = 
k
n
aT ( b ) + d ( n ) si ∃k : n = b
entonces,
T ( n) = Θ( n logb a ) +
log b n −1
∑
j =0
 n
a jd j 
b 
Demostración. Ya se hizo en las notas anteriores.
Láminas Análisis-(24-26)
Maestro-9
Análisis y Diseño de Algoritmos
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
g( n) =
log b n −1
∑
j =0
 n
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
Análisis y Complejidad de Algoritmos
Maestro-10
5
Arturo Díaz Pérez
Demostración Caso 1
F Si d(n) = O(nlogba-ε), entonces, d(n/bi) = O((n/bi)logba-ε)
log b a −ε

 logb n −1
 n

g ( n) = O ∑ a j d  j 

 j =0
b




log b n −1
∑
j =0
 n
a d j 
b 
log b a −ε
=n
j
log b a −ε
log b n −1
∑
j =0
= n log b a −ε
 abε 
 log b a 
b

log b n −1
∑ (b
ε
j
)j
j =0
 (bε ) logb n − 1
= n logb a −ε 

ε
 b −1 
 n ε − 1
= n logb a −ε  ε 
 b − 1
Análisis y Diseño de Algoritmos
Maestro-11
Demostración Caso 1 (cont.)
log b n −1
∑
j =0
 n
a d j 
b 
j
log b a −ε
ε
log a −ε  n − 1 
= 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
Análisis y Complejidad de Algoritmos
Maestro-12
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
∑
j =0
 n
a  j
b 
log b a
=n
j
log b a
log b n −1
∑
j =0
= n logb a
 a 
 log b a 
b

j
log b n −1
∑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)
Maestro-13
Análisis y Diseño de Algoritmos
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).
g (n) =
g (n) ≤
log b n −1
∑
 n
a jd j 
b 
j =0
log b n −1
log b a
∑ c d (n)
j =0
j
∞
g (n) ≤ d ( n)∑ c j
j =0
= d ( n)
1
, 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
Análisis y Complejidad de Algoritmos
Maestro-14
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)).
Maestro-15
Análisis y Diseño de Algoritmos
Demostración Lema 3
F Por el Lema 1
T ( n) = Θ( n logb a ) +
log b n −1
∑
j =0
 n
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
Análisis y Complejidad de Algoritmos
Maestro-16
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
Análisis y Complejidad de Algoritmos
Maestro-17
9
Descargar