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