Recurrencias

30
Resolviendo Recurrencias Mauro Jaskelioff 16/03/2015

Transcript of Recurrencias

Resolviendo Recurrencias

Mauro Jaskelioff

16/03/2015

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

Referencias

I Introduction to Algorithms. Thomas H. Cormen, Charles E.Leiserson, Ronald L. Rivest, Clifford Stein

I Fundamentals of Algorithmics. Gilles Brassard, Paul Bratley