Técnicas para solucionar ecuaciones de recurrencia Vamos a estudiar dos técnicas que nos permitan extender la solución a una ecuación de recurrencia encontrada usando sustitución de variables. I Nos vamos a concentrar en la notación O Primera técnica: I Utilizamos una sustitución de variable para encontrar una solución en un caso particular. I I IIC1253 – Por ejemplo: T 2 O(n · log2 n | POTENCIA2 ) Usamos inducción para demostrar que la solución es válida en el caso general Análisis de Algoritmos 21 / 34 Construcción de soluciones usando inducción Consideremos la ecuación de recurrencia para el algoritmo de búsqueda en listas ordenadas: ( 1 n=1 T (n) = T (b n2 c) + 1 n > 1 Sabemos que T 2 O(log2 n | POTENCIA2 ) I Queremos demostrar entonces que: (9c 2 R+ )(9n0 2 N)(8n IIC1253 – Análisis de Algoritmos n0 ) (T (n) c · log2 n) 22 / 34 Construcción de soluciones usando inducción Veamos algunos valores de la función T para estimar c y n0 : T (1) = 1 T (2) = 2 T (3) = 2 T (4) = 3 En este caso necesitamos que n0 I 2yc 2 ¿Por qué? Intentamos entonces con n0 = 2 y c = 2 I IIC1253 – Por demostrar: (8n Análisis de Algoritmos 2) (T (n) 2 · log2 n) 23 / 34 Inducción fuerte ¿Cuál es el principio de inducción adecuado para el problema anterior? IIC1253 – I Tenemos n0 como punto de partida I n0 es un caso base, pero podemos tener otros I Dado n > n0 tal que n no es un caso base, suponemos que la propiedad se cumple para todo k 2 {n0 , . . . , n 1} Análisis de Algoritmos 24 / 34 Inducción fuerte: Ejemplo Queremos demostrar que (8n I 2 es el punto de partida y el primer caso base I También 3 es un caso base ya que T (3) = T (1) + 1 y para T (1) no se cumple la propiedad I Para n 4 tenemos que T (n) = T (b n2 c) + 1 y b n2 c lo que resolvemos este caso de manera inductiva I IIC1253 – 2) (T (n) 2 · log2 n) 2, por Suponemos que la propiedad se cumple para todo k 2 {2, . . . , n 1} Análisis de Algoritmos 25 / 34 Inducción fuerte: Ejemplo Vamos a demostrar entonces que para ( 1 T (n) = T (b n2 c) + 1 se tiene que (8n n=1 n>1 2) (T (n) 2 · log2 n) Casos base: T (2) T (3) = = 2 2 IIC1253 – Análisis de Algoritmos 2 · log2 2 2 · log2 3 4 y para todo k 2 {2, . . . , n Caso inductivo: Suponemos que n T (k) = < 1}: 2 · log2 k 26 / 34 Inducción fuerte: Ejemplo Tenemos que: T (n) = = n T (b c) + 1 2 n 2 · log2 b c + 1 2 n 2 · log2 + 1 2 2 · log2 n 2 + 1 = 2 · log2 n 1 < 2 · log2 n IIC1253 – Análisis de Algoritmos 27 / 34 Una segunda técnica para solucionar ecuaciones de recurrencia Para definir esta segunda técnica necesitamos definir algunos términos. Una función f : N ! R+ 0 es asintóticamente no decreciente si: (9n0 2 N)(8n n0 ) (f (n) f (n + 1)) Ejemplo Las funciones log2 n, n, n5 y 2n son asintóticamente no decrecientes IIC1253 – Análisis de Algoritmos 28 / 34 Funciones b-armónicas Sea f : N ! R+ 0 y b 2 N tal que b > 0 I f es una función b-armónica si f (b · n) 2 O(f (n)) Ejemplo Las funciones log2 n, n y n5 son b-armónicas para cualquier b (b > 0). La función 2n no es 2-armónica. IIC1253 – Análisis de Algoritmos 29 / 34 Una segunda técnica: extensión de soluciones Sean f , g : N ! R+ 0 , b 2 N tal que b > 0, y POTENCIAb = {b i | i 2 N} Teorema Si f , g son asintóticamente no decrecientes, g es b-armónica y f 2 O(g | POTENCIAb ), entonces f 2 O(g ). IIC1253 – Análisis de Algoritmos 30 / 34 Una segunda técnica: demostración del teorema Como f es asintóticamente no decreciente: (9n0 2 N)(8n n0 ) (f (n) f (n + 1)) Como g es asintóticamente no decreciente: (9n1 2 N)(8n n1 ) (g (n) g (n + 1)) Como f 2 O(g | POTENCIAb ): (9c 2 R+ )(9n2 2 N)(8n n2 ) (n 2 PONTENCIAb ! f (n) c · g (n)) IIC1253 – Análisis de Algoritmos 31 / 34 Una segunda técnica: demostración del teorema Como g es b-armónica: (9d 2 R+ )(9n3 2 N)(8n n3 ) (g (b · n) d · g (n)) Sea n4 = máx{1, n0 , n1 , n2 , n3 } y n Como n 1, existe k n4 0 tal que: b k n < b k+1 Como n n0 y f es asintóticamente no decreciente: f (n) f (b k+1 ) IIC1253 – Análisis de Algoritmos 32 / 34 Una segunda técnica: demostración del teorema Como n n2 y f 2 O(g | POTENCIAb ): f (b k+1 ) c · g (b k+1 ) Dado que b k n, se tiene que b k+1 b · n. Ası́, dado que n y g es asintóticamente no decreciente: n1 g (b k+1 ) g (b · n) Finalmente, dado que n n3 y g es b-armónica: g (b · n) d · g (n) IIC1253 – Análisis de Algoritmos 33 / 34 Una segunda técnica: demostración del teorema Combinando los resultados anteriores obtenemos: f (n) f (b k+1 ) c · g (b k+1 ) c · g (b · n) c · d · g (n) Por lo tanto: (8n n4 ) (f (n) (c · d) · g (n)) Concluimos que f 2 O(g ). IIC1253 – Análisis de Algoritmos 34 / 34