Análisis de algoritmos: Parte III

Anuncio
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
Descargar