Analisis de Algoritmos
I Queremos poder evaluar la performance de algoritmos.I Para esto utilizamos
I Notacion AsintoticaI Modelo de Costo basado en LenguajeI Analizamos trabajo (W ) y profundidad (S)
I Al plantear el trabajo y profundidad de algoritmos recursivossurgen recurrencias.
I ¿Como resolver las recurrencias?I Veremos varias tecnicas...
Substitucion: Adivinando la solucion
I Probamos los siguientes pasos
1. Adivinamos la forma de la solucion.2. Probamos que es correcta usando induccion matematica.
I Ejemplo (recordar mergesort)
W (0) = c0
W (1) = c1
W (n) = 2W (bn/2c) + c2n
I Adivinamos que W (n) ∈ O(n lg n)
I Probamos que W (n) 6 cn lg n.
I Reemplazamos nuestra solucion en la recurrencia
W (n) 6 2(cbn/2c lgbn/2c) + c2n
6 cn lg(n/2) + c2n
= cn lg n − cn lg 2 + c2n
= cn lg n − cn + c2n
6 cn lg n siempre y cuando c > c2.
I Faltan chequear los casos bases. ¿W (0) 6 c · 0 · lg 0?¿W (1) 6 c · 1 · lg 1?
I La notacion O solo requiere W (n) 6 cn lg n para n > N.Tomamos N = 2
W (2) = 2W (1) + 2c2 = 2c1 + 2c2 6 c · 2 lg 2 = 2c
W (3) = 2W (1) + 3c2 = 2c1 + 3c2 6 c · 3 lg 3
I Elegimos c suficientemente grande.
Arboles de recurrencia
I Una tecnica general para resolver recurrencias son los arbolesde recurrencia
I Los ilustramos usando la recurrencia
T (1) = c1
T (n) = 3T (n/4) + cn2
I Hacemos un arbol que en su raız tiene el costo para el ninicial, con ramas indicando cada una de las llamadasrecursivas.
Arboles de recurrencia (cont.)
I Las ramas correspondientes a las llamadas recursivas seexpanden, ahora tienen el costo correspondiente a cadallamada y generan nuevas hojas.
Arboles de recurrencia (cont.)
I Se sigue expandiendo el arbol hasta llegar a un caso base.
I En cada nivel se suma el total de operaciones por nivel.El costo total es la suma de todos los niveles.
Arboles de recurrencia (cont.)
I La suma obtenida se manipula algebraicamente para llegar alresultado.
T (n) = cn2 +3
16cn2 +
(3
16
)2
cn2 + · · ·+(
3
16
)log4 n−1
cn2 + knlog4 3
=
log4 n−1∑i=0
(3
16
)i
cn2 + knlog4 3
=(3/16)log4 n − 1
(3/16)− 1cn2 + knlog4 3
∈ O(n2)
I Si somos prolijos, el metodo nos da una solucion exacta.
I Si no, al menos nos da un candidato para usar el metodo desubstitucion.
Ejercicio
Verificar usando el metodo de la substitucion que la cota obtenidaes ajustada. Es decir, probar que
T (n) = 3T (n/4) + cn2 ∈ Θ(n2)
Nota: De aquı en mas, si no se menciona caso base,suponerlo(s) constante(s).
Simplificando Recurrencias
I Para el analisis de mergesort, nos olvidamos de los b·c y los d·eI ¿Cuando es valido hacer estas aproximaciones?
I Si n = bk entonces n/b = bn/bc = dn/be.I Notar que no alcanza que n sea multiplo de b.
I Podrıa suceder que la solucion asintotica para entradasn = bk sea la solucion para cualquier entrada.
Funciones suaves
I Una funcion f : N→ R+ es eventualmente no decreciente si
∃N ∈ N. f (n) 6 f (n + 1) para todo n > N
I Una funcion f : N→ R+ es b-suave (smooth) si
1. es eventualmente no decreciente y2. f (bn) ∈ O(f (n)).
I Una funcion es suave si es b-suave para todo b.
I Propiedad: si f es b-suave para un b > 2, entonces es suavepara todo b.
I Ejemplos de funciones suaves: n2, nr (para todo r), n lg n.
I Ejemplos de funciones no suaves: nlg n, 2n, n!.
I Ejercicio: verificar que n2 es suave y que 2n no lo es.
Regla de suavidad
I Regla de suavidad: Sea f suave y sea g eventualmente nodecreciente. Para todo b > 2,
g(bk) ∈ Θ(f (bk)) ⇒ g(n) ∈ Θ(f (n))
I Ejemplo de uso: Considere la siguiente recurrencia
W (1) = c
W (n) = W (dn/2e) + W (bn/2c) + kn
I Si solo consideramos potencias de 2 obtenemos
W ′(1) = c
W ′(n) = 2W ′(n/2) + kn
que es O(n lg n). Como n lg n es suave, W (n) ∈ O(n lg n).
Ecuacion Caracterıstica
I Metodo sistematico.
I Permite resolver recurrencias de forma exacta.
I Limitado a ciertas formas de recurrencias.
I Muy potente.
Recurrencias Lineales Homogeneas
I Las recurrencias lineales homogeneas a coeficientes constantesson de la forma:
a0T (n) + a1T (n − 1) + · · ·+ akT (n − k) = 0
I Son lineales ya que no contienen terminos comoT (n − i)T (n − j), T 2(n − 1).
I Son homogeneas porque la combinacion lineal de los T (n − i)es igual a 0.
I A coeficientes constantes porque los ai son constantes.
I Ejemplo: F (n) = F (n − 1) + F (n − 2).Se puede reescribir como
F (n)−F (n−1)−F (n−2) = 0 k = 2, a0 = 1, a1 = −1, a2 = −1
Solucion general
I Dada la recurrencia
a0T (n) + a1T (n − 1) + · · ·+ akT (n − k) = 0
definimos su polinomio caracterıstico como
p(x) = a0xk + a1xk−1 + · · ·+ ak
I Toda solucion de sera de la forma
T (n) =k∑
i=1
ci rni
donde los ri son las raıces del polinomio, bajo el supuesto quetodas las ri son distintas (no hay raıces multiples).
I Las constantes c1, c2, . . . , ck se obtienen de k condicionesiniciales.
Ejemplo : Fibonacci
F (0) = 0F (1) = 1F (n) = F (n − 1) + F (n − 2)
I La recurrencia es F (n)− F (n − 1)− F (n − 2) = 0 y supolinomio caracterıstico es x2 − x − 1.
I Las raıces son r1 = 1+√5
2 y r2 = 1−√5
2
I La solucion general es F (n) = c1rn1 + c2rn2 .
I 0 = F (0) = c1 + c2 1 = F (1) = r1c1 + r2c2
c1 + c2 = 0r1c1 + r2c2 = 1
⇒
c1 = 1√
5
c2 = − 1√5
I Por lo tanto F (n) = 1√5
[(1+√5
2
)n−(1−√5
2
)n](Moivre)
Ejercicio
Resolver la recurrencia
W (0) = 0W (1) = 5W (n) = 3 W (n − 1) + 4 W (n − 2)
I W (n)− 3W (n − 1)− 4W (n − 2) = 0
I El polinomio caracterıstico es x2−3x −4 r1 = −1 r2 = 4
I La solucion es de la forma W (n) = c1(−1)n + c24n
I El sistema de ecuaciones dado por las condicionales iniciales es
c1 + c2 = 0−c1 + 4c2 = 5
I Resolviendo, obtenemos c1 = −1 y c2 = 1.
I Por lo tanto W (n) = 4n − (−1)n
Raıces Multiples
I ¿Que sucede cuando hay raıces multiples?I El polinomio caracterıstico p(x) = a0xk + a1xk−1 + · · ·+ ak
tendraI q raıces distintas r1, r2, . . . , rq.I cada una con multiplicidad m1,m2, . . . ,mq.
I Las soluciones seran de la forma
T (n) =
q∑i=1
mi−1∑j=0
cijnj rni
I Las constantes cij se determinan con las condiciones iniciales.
Ejemplo
S (0) = 0S (1) = 1S (2) = 2S (n) = 5 S (n − 1)− 8 S (n − 2) + 4 S (n − 3)
I Reescribimos la recurrencia comoS(n)− 5S(n − 1) + 8S(n − 2)− 4S(n − 3) = 0
I El polinomio caracterıstico esx3 − 5x2 + 8x − 4 = (x − 1)(x − 2)2
I Las raıces son r1 = 1 con multiplicidad 1 y r2 = 2 conmultiplicidad 2
I La solucion general es S(n) = c11n + c22n + c3n2n
Ejemplo (cont.)
I La solucion general es S(n) = c11n + c22n + c3n2n
I Las condiciones iniciales nos dan
c1 + c2 = 0 n = 0c1 + 2c2 + 2c3 = 1 n = 1c1 + 4c2 + 8c3 = 2 n = 2
I c1 = −2, c2 = 2, c3 = −12
I La solucion queda
S(n) = 2n+1 − n2n−1 − 2
Recurrencias Lineales No Homogeneas
I La solucion de recurrencias lineales se complica cuando larecurrencia no es homogenea.
I Consideraremos recurrencias no homogeneas con la siguienteforma
a0T (n)+a1T (n−1)+· · ·+akT (n−k) = bn1p1(n)+bn
2p2(n)+. . .
I Las bi son constantes distintas.I Cada pi es un polinomio de grado di .
I Estas recurrencias se resuelven usando el siguiente polinomiocaracterıstico
(a0xk + a1xk−1 + · · ·+ ak)(x − b1)d1+1(x − b2)d2+1 + . . .
I Luego, procedemos como en el caso homogeneo.
Ejemplo
T (0) = 0T (n) = 2 T (n − 1) + n + 2n
I La recurrencia se puede reescribir como
T (n)− 2T (n − 1) = n + 2n
que con b1 = 1, p1(n) = n, b2 = 2, p2(n) = 1 tiene la formaadecuada.
I d1 = 1 y d2 = 0, por lo que el polinomio caracterıstico es
(x − 2)(x − 1)2(x − 2)
r1 = 1 y r2 = 2, ambas con multiplicidad 2.
I Por lo tanto las soluciones seran de la forma
T (n) = c11n + c2n1n + c32n + c4n2n
Ejercicio
T (0) = 1T (n) = 3 T (n − 1) + 2n
I Reescribimos la recurrencia como T (n)− 3T (n − 1) = 2n.(b1 = 2, p1(n) = 1, d1 = 0)
I El polinomio caracterıstico es (x − 3)(x − 2)
I Las raıces son 3 y 2 con multiplicidad 1.
I Las soluciones son de la forma T (n) = c13n + c22n.
I Determinamos las constantes c1 = 3 y c2 = −2.
I La solucion final es T (n) = 3n+1 − 2n+1.
Cambio de Variable
I Dada la recurrencia
T (n) =
1 si n = 13T (n/2) + n si n > 1
I Definimos una nueva recurrencia T ′(i) = T (2i ).
I O sea
T ′(i) =
1 si i = 03T ′(i − 1) + 2i si i > 1
I T ′(i) = 3i+1 + 2i+1.
I T ′(i) = T (2i ) ⇔ T (n) = T ′(lg n) para n potencia de 2!
I Si n es potencia de 2, T (n) = T ′(lg n) = 3 · nlg 3 − 2n
T (n) ∈ Θ(nlg 3) si n potencia de 2
I Pero nlg 3 es suave y T (n) creciente ⇒ T (n) ∈ Θ(nlg 3)
Ejercicio
T (0) = kT (n) = 2T (n/2) + n lg n
I T ′(i) = T (2i ) = 2T (2i−1) + i2i = 2T ′(i − 1) + i2i
I T ′(i)− 2T ′(i − 1) = i2i , con pol. car.(x − 2)(x − 2)2 = (x − 2)3 (raız 2 con multiplicidad 3)
I T ′(i) = c12i + c2i2i + c3i22i
I T (n) = c1n + c2n lg n + c3n lg2 n (para n potencia de 2)
I n lg n = (c2 − c3)n + 2c3n lg n ⇒ c2 = c3 = 12
I T (n) ∈ Θ(n lg2 n) para n potencia de 2.
I n lg2 n suave y T (n) creciente ⇒ T (n) ∈ Θ(n lg2 n)
Resolviendo recurrencias
I Las recurrencias que aparecen en algoritmos“Divide & Conquer” usualmente tienen la forma:
T (n) = aT (n/b) + f (n)
I En general, podemos obtener el orden de estas recurrenciasdirectamente usando una resolucion general.
“El Teorema Maestro”
El Teorema Maestro
I Dados a > 1 y b > 1 y la recurrencia
T (n) = aT (n/b) + f (n) ,
entonces
T (n) ∈
Θ(nlgb a) si ∃ε > 0. f (n) ∈ O(nlgb a−ε)
Θ(nlgb a lg n) si f (n) ∈ Θ(nlgb a)
Θ(f (n))si ∃ε > 0. f (n) = Ω(nlgb a+ε)y ∃c < 1,N ∈ N. ∀n > N.af (n/b) 6 cf (n)
I Para W (n) = 2W (bn/2c) + c2n estamos en el 2do caso ya quelg2 2 = 1 y g(n) ∈ Θ(n1), y por lo tanto W (n) = Θ(n lg n)
Comentarios acerca del Teorema Maestro
I Los casos se deciden comparando f (n) y nlgb a.I Caso 1: nlgb a es mas grande.I Caso 2: f (n) y nlgb a tienen el mismo orden.I Caso 3: f (n) es mas grande.
I En realidad no basta con que una sea mas grande que la otra,sino que debe serlo polinomialmente.
I f (n) = n lg n no es polinomialmente mas grande que g(n) = n.
I Los tres casos no cubren todas las posibilidades
I En la practica van a probar una version (levemente) menosgeneral del teorema maestro.
Resumen
Resolucion de recurrencias usando:
I Substitucion
I Arbol de recurrencias.
I Regla de suavidad
I Ecuacion caracterıstica
I Teorema Maestro
Top Related