Você está na página 1de 32

La eficiencia de los algoritmos La eficiencia de los algoritmos

Anlisis y Diseo de Algoritmos Anlisis y Diseo de Algoritmos


La eficiencia de los algoritmos La eficiencia de los algoritmos
Comparacin de algoritmos Comparacin de algoritmos
Principio de invarianza Principio de invarianza
Eficiencia Eficiencia
Notaciones asintticas Notaciones asintticas
Clculo de la eficiencia de un algoritmo Clculo de la eficiencia de un algoritmo Clculo de la eficiencia de un algoritmo Clculo de la eficiencia de un algoritmo
Resolucin de recurrencias: Resolucin de recurrencias:
Mtodo de la ecuacin caracterstica Mtodo de la ecuacin caracterstica
Recurrencias homogneas Recurrencias homogneas
Recurrencias no homogneas Recurrencias no homogneas
Cambios de variable Cambios de variable
Transformaciones del rango Transformaciones del rango
Apndice: Frmulas tiles Apndice: Frmulas tiles
1 1
Comparacin de algoritmos Comparacin de algoritmos
A menudo dispondremos de ms de un algoritmo para A menudo dispondremos de ms de un algoritmo para
resolver un problema dado, con cul nos quedamos? resolver un problema dado, con cul nos quedamos?
USO DE RECURSOS USO DE RECURSOS
Computacionales: Computacionales:
Tiempo de ejecucin Tiempo de ejecucin
Espacio en memoria Espacio en memoria
No computacionales: No computacionales:
Esfuerzo de desarrollo (anlisis, diseo & implementacin) Esfuerzo de desarrollo (anlisis, diseo & implementacin)
2 2
Comparacin de algoritmos Comparacin de algoritmos
Factores que influyen en el uso de recursos Factores que influyen en el uso de recursos
Recursos computacionales: Recursos computacionales:
Diseo del algoritmo Diseo del algoritmo
Complejidad del problema (p.ej. tamao de las entradas) Complejidad del problema (p.ej. tamao de las entradas)
Hardware (arquitectura, MHz, MBs) Hardware (arquitectura, MHz, MBs) Hardware (arquitectura, MHz, MBs) Hardware (arquitectura, MHz, MBs)
Calidad del cdigo Calidad del cdigo
Calidad del compilador (optimizaciones) Calidad del compilador (optimizaciones)
Recursos no computacionales: Recursos no computacionales:
Complejidad del algoritmo Complejidad del algoritmo
Disponibilidad de bibliotecas reutilizables Disponibilidad de bibliotecas reutilizables
3 3
Principio de invarianza Principio de invarianza
Dos implementaciones de un mismo algoritmo no Dos implementaciones de un mismo algoritmo no
diferirn ms que en una constante multiplicativa. diferirn ms que en una constante multiplicativa.
Si t Si t
11
(n) y t (n) y t
22
(n) son los tiempos de dos (n) son los tiempos de dos
implementaciones de un mismo algoritmo, implementaciones de un mismo algoritmo, implementaciones de un mismo algoritmo, implementaciones de un mismo algoritmo,
se puede comprobar que: se puede comprobar que:
4 4
) ( ) ( ); ( ) ( , ,
1 2 2 1
n dt n t n ct n t d c
Eficiencia Eficiencia
Medida del uso de los recursos computacionales Medida del uso de los recursos computacionales
requeridos por la ejecucin de un algoritmo en funcin requeridos por la ejecucin de un algoritmo en funcin
del tamao de las entradas. del tamao de las entradas. del tamao de las entradas. del tamao de las entradas.
T(n) T(n) Tiempo empleado para ejecutar el Tiempo empleado para ejecutar el
algoritmo con una entrada de tamao n algoritmo con una entrada de tamao n
5 5
Eficiencia Eficiencia
Tipos de anlisis Tipos de anlisis
Cmo medimos el tiempo de ejecucin de un algoritmo? Cmo medimos el tiempo de ejecucin de un algoritmo?
Mejor caso Mejor caso
En condiciones ptimas (no se usa por ser demasiado optimista). En condiciones ptimas (no se usa por ser demasiado optimista). En condiciones ptimas (no se usa por ser demasiado optimista). En condiciones ptimas (no se usa por ser demasiado optimista).
Peor caso Peor caso
En el peor escenario posible (nos permite acotar el tiempo de ejecucin). En el peor escenario posible (nos permite acotar el tiempo de ejecucin).
Caso promedio Caso promedio
Caso difcil de caracterizar en la prctica. Caso difcil de caracterizar en la prctica.
Anlisis probabilstico Anlisis probabilstico
Asume una distribucin de probabilidad sobre las posibles entradas. Asume una distribucin de probabilidad sobre las posibles entradas.
Anlisis amortizado Anlisis amortizado
Tiempo medio de ejecucin por operacin
sobre una secuencia de ejecuciones sucesivas.
6 6
Eficiencia Eficiencia
Ejemplo Ejemplo
Algoritmo 1: Algoritmo 1: T(n) = 10 T(n) = 10
- -44
22
nn
segundos segundos
n = 38 datos n = 38 datos
T(n) = 1 ao T(n) = 1 ao T(n) = 1 ao T(n) = 1 ao
Algoritmo 2: Algoritmo 2: T(n) = 10 T(n) = 10
- -22
nn
33
segundos segundos
n = 1000 bits n = 1000 bits
T(n) = 1 ao T(n) = 1 ao
Cul es mejor? Se precisa un Cul es mejor? Se precisa un anlisis asinttico anlisis asinttico
7 7
Notaciones asintticas Notaciones asintticas
Estudian el comportamiento del algoritmo cuando el Estudian el comportamiento del algoritmo cuando el
tamao de las entradas es lo suficientemente grande, tamao de las entradas es lo suficientemente grande,
sin tener en cuenta lo que ocurre para entradas sin tener en cuenta lo que ocurre para entradas sin tener en cuenta lo que ocurre para entradas sin tener en cuenta lo que ocurre para entradas
pequeas y obviando factores constantes. pequeas y obviando factores constantes.
8 8
Notaciones asintticas Notaciones asintticas
Orden de eficiencia Orden de eficiencia
Un algoritmo tiene un Un algoritmo tiene un tiempo de ejecucin de orden orden
f(n) f(n), para una funcin dada , para una funcin dada f f, si existe una constante , si existe una constante
positiva positiva c c y una implementacin del algoritmo capaz y una implementacin del algoritmo capaz positiva positiva c c y una implementacin del algoritmo capaz y una implementacin del algoritmo capaz
de resolver cada caso del problema en un de resolver cada caso del problema en un tiempo tiempo
acotado superiormente por acotado superiormente por cf cf (n) (n), donde , donde nn es el es el
tamao del problema considerado. tamao del problema considerado.
9 9
Notaciones asintticas Notaciones asintticas
Notacin O Notacin O
Decimos que una funcin Decimos que una funcin T(n) es O(f(n)) T(n) es O(f(n))
si existen constantes n si existen constantes n
00
y c y c
tales que tales que T(n) T(n) cf(n) cf(n) para todo n para todo n nn
00
::
T(n) es O(f(n)) T(n) es O(f(n))
c c R, R, n n
00
N, tal que N, tal que n>n n>n
00
N, T(n) N, T(n) cf(n) cf(n)
10 10
Notaciones asintticas Notaciones asintticas
Ejemplos Ejemplos
T(n) = 3n T(n) = 3n
T(n) T(n) es es O(n), O(n log n), O(n O(n), O(n log n), O(n
22
), O(n ), O(n
33
) y O(2 ) y O(2
nn
). ).
T(n) = (n+1)
2
T(n) T(n) es es O(n O(n
22
), O(n ), O(n
33
) y O(2 ) y O(2
nn
). ). T(n) T(n) es es O(n O(n
22
), O(n ), O(n
33
) y O(2 ) y O(2
nn
). ).
T(n) no T(n) no es es O(n) O(n) ni ni O(n log n). O(n log n).
T(n) = 32n
2
+ 17n + 32(n) = 32n (n) = 32n
22
+ 17n + 32. + 17n + 32.
T(n) T(n) es es O(n O(n
22
) ) pero pero no no es es O(n). O(n).
T(n) = 3n
3
+ 345n
2
T(n) T(n) es es O(n O(n
33
) ) pero pero no no es es O(n O(n
22
). ).
T(n) = 3
n
T(n) T(n) es es O(3 O(3
nn
) ) pero pero no no es es O(2 O(2
nn
). ).
11 11
Notaciones asintticas Notaciones asintticas
Notaciones Notaciones y y
Notacin Notacin (cota inferior) (cota inferior)
T(n) es T(n) es (f(n)) cuando (f(n)) cuando T(n) es T(n) es (f(n)) cuando (f(n)) cuando
c cRR
++
, , nn
00
N: N: nnnn
0 0
T(n) T(n) cf cf(n) (n)
Notacin Notacin (orden exacto) (orden exacto)
T(n) es T(n) es (f(n)) cuando (f(n)) cuando
T(n) es O(f(n)) y T(n) es T(n) es O(f(n)) y T(n) es (f(n)) (f(n))
12 12
rdenes de eficiencia rdenes de eficiencia
rdenes de eficiencia ms habituales rdenes de eficiencia ms habituales
N O(log
2
n) O(n
2
) O(n log
2
n) O(n
2
) O(2
n
) O(n!)
10 3 s 10 s 30 s 0.1 ms 1 ms 4 s
25 5 s 25 s 0.1 ms 0.6 ms 33 s 10
11
aos
50 6 s 50 s 0.3 ms 2.5 ms 36 aos
Tiempos calculados suponiendo 1 s por operacin elemental.
O(1) O(1) O(log n) O(log n) O(n) O(n) O(n log n) O(n log n) O(n O(n
22
) ) O(n O(n
33
) ) O(2 O(2
n n
) ) O(n!) O(n!)
13 13
50 6 s 50 s 0.3 ms 2.5 ms 36 aos
100 7 s 100 s 0.7 ms 10 ms 10
17
aos
1000 10 s 1 ms 10 ms 1 s
10000 13 s 10 ms 0.1 s 100 s
100000 17 s 100 ms 1.7 s 3 horas
1000000 20 s 1 s 20 s 12 das
rdenes de eficiencia rdenes de eficiencia
Orden lineal: O(n) Orden lineal: O(n)
Tiempo de ejecucin proporcional al tamao de la entrada. Tiempo de ejecucin proporcional al tamao de la entrada.
Ejemplo: Calcular el mximo de n nmeros Ejemplo: Calcular el mximo de n nmeros a
1
, , a
n
. Ejemplo: Calcular el mximo de n nmeros Ejemplo: Calcular el mximo de n nmeros a
1
, , a
n
.
14 14
max a
1
for i = 2 to n {
if (a
i
> max)
max a
i
}
rdenes de eficiencia rdenes de eficiencia
Orden cuadrtico: O(n Orden cuadrtico: O(n
22
) )
Aparece cuando tenemos que enumerar todas las Aparece cuando tenemos que enumerar todas las
parejas posibles de elementos de un conjunto. parejas posibles de elementos de un conjunto.
Ejemplo: Dado un conjunto de puntos en el plano Ejemplo: Dado un conjunto de puntos en el plano (x
1
, y
1
), , Ejemplo: Dado un conjunto de puntos en el plano Ejemplo: Dado un conjunto de puntos en el plano (x
1
, y
1
), ,
(x
n
, y
n
), encontrar la pareja ms cercana. encontrar la pareja ms cercana.
15 15
min (x
1
- x
2
)
2
+ (y
1
- y
2
)
2
for i = 1 to n {
for j = i+1 to n {
d (x
i
- x
j
)
2
+ (y
i
- y
j
)
2
if (d < min)
min d
}
}
rdenes de eficiencia rdenes de eficiencia
rdenes O(log n) y O(n log n) rdenes O(log n) y O(n log n)
Aparecen en muchos algoritmos recursivos Aparecen en muchos algoritmos recursivos
p.ej. Estrategia divide y vencers p.ej. Estrategia divide y vencers
Ejemplos: Ejemplos: O(log n) O(log n) Bsqueda binaria Bsqueda binaria Ejemplos: Ejemplos: O(log n) O(log n) Bsqueda binaria Bsqueda binaria
O(n log n) O(n log n) Mergesort Mergesort, , Heapsort Heapsort
Orden exponencial O(2
n
)
Aparece en muchos problemas de tipo combinatorio
Ejemplo: Enumerar todos los subconjuntos de un conjunto dado. Ejemplo: Enumerar todos los subconjuntos de un conjunto dado.
16 16
Clculo de la eficiencia Clculo de la eficiencia
Operacin elemental Operacin elemental
Operacin de un algoritmo cuyo tiempo de ejecucin Operacin de un algoritmo cuyo tiempo de ejecucin
se puede acotar superiormente por una constante. se puede acotar superiormente por una constante.
En nuestro anlisis, slo contar el nmero de En nuestro anlisis, slo contar el nmero de En nuestro anlisis, slo contar el nmero de En nuestro anlisis, slo contar el nmero de
operaciones elementales y no el tiempo exacto operaciones elementales y no el tiempo exacto
necesario para cada una de ellas. necesario para cada una de ellas.
En la descripcin de un algoritmo, puede ocurrir que En la descripcin de un algoritmo, puede ocurrir que
una lnea de cdigo corresponda a un nmero de una lnea de cdigo corresponda a un nmero de
variable de operaciones elementales. variable de operaciones elementales.
p.ej. p.ej. x x max max{A[k], 0 <= k < n} {A[k], 0 <= k < n}
17 17
Clculo de la eficiencia Clculo de la eficiencia
Operaciones elementales Operaciones elementales
Algunas Algunas operaciones matemticas operaciones matemticas no son operaciones no son operaciones
elementales. elementales.
p.ej. p.ej. sumas y productos sumas y productos p.ej. p.ej. sumas y productos sumas y productos
dependen de la longitud de los dependen de la longitud de los operandos operandos..
Por convencin, en la prctica, suma, diferencia, Por convencin, en la prctica, suma, diferencia,
producto, divisin, mdulo, operaciones booleanas, producto, divisin, mdulo, operaciones booleanas,
comparaciones y asignaciones se consideran comparaciones y asignaciones se consideran
operaciones, salvo que explcitamente se establezca lo operaciones, salvo que explcitamente se establezca lo
contrario. contrario.
18 18
Clculo de la eficiencia Clculo de la eficiencia
Reglas de clculo de la eficiencia Reglas de clculo de la eficiencia
1. Sentencias simples
2. Bloques de sentencias
3. Sentencias condicionales 3. Sentencias condicionales
4. Bucles
5. Llamadas a funciones
6. Funciones recursivas
19 19
Clculo de la eficiencia Clculo de la eficiencia
Reglas de clculo de la eficiencia Reglas de clculo de la eficiencia
1. Sentencias simples 1. Sentencias simples
Consideraremos que cualquier sentencia simple Consideraremos que cualquier sentencia simple
(lectura, escritura, asignacin, etc.) (lectura, escritura, asignacin, etc.) (lectura, escritura, asignacin, etc.) (lectura, escritura, asignacin, etc.)
va a consumir un tiempo constante, va a consumir un tiempo constante, O(1) O(1),,
salvo que contenga una llamada a una funcin. salvo que contenga una llamada a una funcin.
20 20
Clculo de la eficiencia Clculo de la eficiencia
Reglas de clculo de la eficiencia Reglas de clculo de la eficiencia
2. Bloques de sentencias 2. Bloques de sentencias
Tiempo total de ejecucin = Suma de los tiempos de Tiempo total de ejecucin = Suma de los tiempos de
ejecucin de cada una de las sentencias del bloque. ejecucin de cada una de las sentencias del bloque. ejecucin de cada una de las sentencias del bloque. ejecucin de cada una de las sentencias del bloque.
Orden de eficiencia = Mximo de los rdenes de Orden de eficiencia = Mximo de los rdenes de
eficiencia de cada una de las sentencias del bloque. eficiencia de cada una de las sentencias del bloque.
21 21
Clculo de la eficiencia Clculo de la eficiencia
Reglas de clculo de la eficiencia Reglas de clculo de la eficiencia
3. Sentencias condicionales 3. Sentencias condicionales
El tiempo de ejecucin de una sentencia condicional El tiempo de ejecucin de una sentencia condicional
es el mximo del tiempo del bloque es el mximo del tiempo del bloque if if es el mximo del tiempo del bloque es el mximo del tiempo del bloque if if
y del tiempo del bloque y del tiempo del bloque else else..
Si el bloque Si el bloque if if es O(f(n)) y el bloque es O(f(n)) y el bloque else else es O(g(n)), es O(g(n)),
la sentencia condicional ser la sentencia condicional ser O( O(max max{f(n), g(n)}) {f(n), g(n)})..
22 22
Clculo de la eficiencia Clculo de la eficiencia
Reglas de clculo de la eficiencia Reglas de clculo de la eficiencia
4. Bucles 4. Bucles
Tiempo de ejecucin Tiempo de ejecucin
= Suma de los tiempos invertidos en cada iteracin = Suma de los tiempos invertidos en cada iteracin = Suma de los tiempos invertidos en cada iteracin = Suma de los tiempos invertidos en cada iteracin
En el tiempo de cada iteracin se ha de incluir el En el tiempo de cada iteracin se ha de incluir el
tiempo de ejecucin del cuerpo del bucle y tambin el tiempo de ejecucin del cuerpo del bucle y tambin el
asociado a la evaluacin de la condicin (y, en su asociado a la evaluacin de la condicin (y, en su
caso, la actualizacin del contador). caso, la actualizacin del contador).
Si todas las iteraciones son iguales, el tiempo total de Si todas las iteraciones son iguales, el tiempo total de
ejecucin del bucle ser el producto del nmero de ejecucin del bucle ser el producto del nmero de
iteraciones por el tiempo empleado en cada iteracin. iteraciones por el tiempo empleado en cada iteracin. 23 23
Clculo de la eficiencia Clculo de la eficiencia
Reglas de clculo de la eficiencia Reglas de clculo de la eficiencia
5. Llamadas a funciones 5. Llamadas a funciones
Si una determinada funcin P tiene una eficiencia de Si una determinada funcin P tiene una eficiencia de
O(f(n)), cualquier llamada a P es de orden O(f(n)). O(f(n)), cualquier llamada a P es de orden O(f(n)). O(f(n)), cualquier llamada a P es de orden O(f(n)). O(f(n)), cualquier llamada a P es de orden O(f(n)).
Las asignaciones con diversas llamadas a funcin Las asignaciones con diversas llamadas a funcin
deben sumar las cotas de tiempo de ejecucin de deben sumar las cotas de tiempo de ejecucin de
cada llamada. cada llamada.
La misma consideracin es aplicable a las La misma consideracin es aplicable a las
condiciones de bucles y sentencias condicionales. condiciones de bucles y sentencias condicionales.
24 24
Clculo de la eficiencia Clculo de la eficiencia
Reglas de clculo de la eficiencia Reglas de clculo de la eficiencia
6. Funciones recursivas 6. Funciones recursivas
Las funciones de tiempo asociadas a funciones Las funciones de tiempo asociadas a funciones
recursivas son tambin recursivas. recursivas son tambin recursivas. recursivas son tambin recursivas. recursivas son tambin recursivas.
p.ej. p.ej. T(n) = T(n T(n) = T(n- -1) + f(n) 1) + f(n)
Para analizar el tiempo de ejecucin de un algoritmo Para analizar el tiempo de ejecucin de un algoritmo
recursivo, le asociamos una funcin de eficiencia recursivo, le asociamos una funcin de eficiencia
desconocida, T(n), y la estimamos a partir de T(k) desconocida, T(n), y la estimamos a partir de T(k)
para distintos valores de k (menores que n). para distintos valores de k (menores que n).
25 25
Clculo de la eficiencia Clculo de la eficiencia
Ejemplo Ejemplo
int int fact fact( (int int n) n)
{ {
if if (n <= 1) (n <= 1)
return return 1; 1;
else else
return return (n * (n * fact fact(n (n 1)); 1));
} }
Los bloques Los bloques if if y y else else son operaciones elementales, son operaciones elementales,
por lo que su tiempo de ejecucin es O(1). por lo que su tiempo de ejecucin es O(1).
26 26
Clculo de la eficiencia Clculo de la eficiencia
T(n) T(n) = 1 + T(n = 1 + T(n - - 1) 1)
= 1 + (1 + T(n = 1 + (1 + T(n- -2)) = 2 + T(n 2)) = 2 + T(n- -2) 2)
= 2 + (1 + T(n = 2 + (1 + T(n- -3)) = 3 + T(n 3)) = 3 + T(n- -3) 3)

= i + T(n = i + T(n- -i) i) = i + T(n = i + T(n- -i) i)

= (n = (n- -1) + T(n 1) + T(n (n (n- -1)) = (n 1)) = (n- -1) + 1 1) + 1
Por tanto, T(n) es O(n) Por tanto, T(n) es O(n)
La implementacin recursiva del clculo del factorial es de orden lineal. La implementacin recursiva del clculo del factorial es de orden lineal.
27 27
Clculo de la eficiencia Clculo de la eficiencia
Ejemplo Ejemplo
int int E( E(int int n) n)
{ {
if if (n == 1) (n == 1)

>
|

\
|
+
=
=
1
2
1
1 , 1
) (
n
n
T
n
n T
return return 0; 0;
else else
return return E(n/2) + 1; E(n/2) + 1;
} }
T(n) es O (log T(n) es O (log
22
n) n)
28 28

\
2
Clculo de la eficiencia Clculo de la eficiencia
T(n) T(n) = T(n/2) + 1 = T(n/2) + 1
= (T(n/4) + 1) + 1 = T(n/4) + 2 = (T(n/4) + 1) + 1 = T(n/4) + 2
= (T(n/8) + 1) +2 = T(n/8) + 3 = (T(n/8) + 1) +2 = T(n/8) + 3

= T(n/2 = T(n/2
ii
) + i ) + i

= T(n/2 = T(n/2
log(n) log(n)
) + log ) + log
22
(n) (n)
= T(1) + log = T(1) + log
22
(n) (n)
Por tanto, T(n) es O(log n) Por tanto, T(n) es O(log n)
29 29
Clculo de la eficiencia Clculo de la eficiencia
El mismo desarrollo se podra realizar ms cmodamente El mismo desarrollo se podra realizar ms cmodamente
con un cambio de variable: con un cambio de variable: n=2 n=2
mm
m = log m = log
22
(n) (n)
T(2 T(2
mm
)) = T(2 = T(2
mm- -11
) + 1= ) + 1=
= (T(2 = (T(2
mm- -22
) + 1) + 1 ) + 1) + 1 = (T(2 = (T(2
mm- -22
) + 1) + 1 ) + 1) + 1
= (T(2 = (T(2
mm- -33
) + 1) + 2 ) + 1) + 2

= T(2 = T(2
mm- -ii
) + i ) + i

= T(2 = T(2
mm- -mm
) + m ) + m
= T(1) + log = T(1) + log
22
(n) (n)
30 30
Clculo de la eficiencia Clculo de la eficiencia
Ejemplo Ejemplo
1 ) 1 ( ; 2 ,
2
) (
2
= +
|

\
|
= T n n
n
T n T
Cambio de variable: Cambio de variable: n = 2 n = 2
mm
nn
22
= (2 = (2
mm
))
22
=(2 =(2
22
))
mm
=4 =4
mm
T(2 T(2
mm
)) = T(2 = T(2
mm- -11
) + 4 ) + 4
mm
==
= T(2 = T(2
mm- -22
) + 4 ) + 4
mm- -11
+ 4 + 4
mm

= T(2 = T(2
mm- -ii
) + [4 ) + [4
mm- -(i (i- -1) 1)
+ + 4 + + 4
mm- -11
+ 4 + 4
mm
]] 31 31
Clculo de la eficiencia Clculo de la eficiencia
Ejemplo Ejemplo
1 ) 1 ( ; 2 ,
2
) (
2
= +
|

\
|
= T n n
n
T n T
] 4 4 4 4 [ ) 1 ( ) 2 (
1 2 1
+ + + + + =

T T
m m m m
L
T(n) es O(n T(n) es O(n
22
))
32 32
3
1
3
4
3
1
3
4 4
1 4
1 4
4 4 1
] 4 4 4 4 [ ) 1 ( ) 2 (
2
2
2
1
2
0
1 2 1
=
=

= = + =
+ + + + + =

=
+
=

n
T T
m
m
i
m
m
i
i i
m m m m
L
Resolucin de recurrencias Resolucin de recurrencias
Tcnicas de resolucin de recurrencias Tcnicas de resolucin de recurrencias
Mtodo de sustitucin Mtodo de sustitucin
1. 1. Desarrollar la expresin Desarrollar la expresin
2. 2. Adivinar la frmula de la expresin Adivinar la frmula de la expresin
3. 3. Demostrar por induccin Demostrar por induccin Demostrar por induccin Demostrar por induccin
4. 4. Resolver constantes Resolver constantes
rbol de recursividad rbol de recursividad
Representacin grfica intuitiva. Representacin grfica intuitiva.
Expansin de recurrencias Expansin de recurrencias
Mtodo algebraico equivalente al rbol de recursividad. Mtodo algebraico equivalente al rbol de recursividad.
Mtodo de la ecuacin caracterstica Mtodo de la ecuacin caracterstica
33 33
Mtodo de sustitucin Mtodo de sustitucin
T(n) es O(n T(n) es O(n
33
)? )?
Suponemos que T(k) ck Suponemos que T(k) ck
33
para k<n para k<n

> +
=
=
1 ) 2 / ( 4
1 ) 1 (
) (
n si n n T
n si O
n T
Suponemos que T(k) ck Suponemos que T(k) ck
33
para k<n para k<n
Demostramos por induccin que T(n) cn Demostramos por induccin que T(n) cn
33
T(n) T(n) = 4T(n/2) + n = 4T(n/2) + n
4c(n/2) 4c(n/2)
3 3
+ n = (c/2)n + n = (c/2)n
33
+ n = cn + n = cn
33
((c/2)n ((c/2)n
33
n) n)
cn cn
33
siempre que ((c/2)n siempre que ((c/2)n
33
n)>0 (p.ej. c2 y n1) n)>0 (p.ej. c2 y n1)
PROBLEMA: Podramos encontrar una cota superior ms ajustada? PROBLEMA: Podramos encontrar una cota superior ms ajustada?
Sugerencia: Probar con T(n) cn Sugerencia: Probar con T(n) cn
22
y T(n) c y T(n) c
11
nn
22
- -c c
22
nn
34 34
rbol de recursividad rbol de recursividad
2
) 2 / ( ) 4 / ( ) ( n n T n T n T + + =
35 35
Ecuacin caracterstica Ecuacin caracterstica
Recurrencias homogneas lineales Recurrencias homogneas lineales
con coeficientes constantes con coeficientes constantes
Lineal: No hay trminos t Lineal: No hay trminos t t t , t , t
22
0
1 1 0
= + + +
k n k n n
t a t a t a L
Lineal: No hay trminos t Lineal: No hay trminos t
nn- -11
t t
nn- -jj
, t , t
22
nn- -ii
Homognea: Igualadas a 0 Homognea: Igualadas a 0
Con coeficientes constantes: Con coeficientes constantes: aa
ii
constantes constantes
Ejemplo: Sucesin de Ejemplo: Sucesin de Fibonacci Fibonacci
36 36
0
2 1 2 1
= + =
n n n n n n
f f f f f f
Ecuacin caracterstica Ecuacin caracterstica
Suposicin: Suposicin: t t
nn
= = x x
nn
Se satisface si x=0 o bien Se satisface si x=0 o bien
0
1
1 0
= + + +
k n
k
n n
x a x a x a L
ecuacin caracterstica ecuacin caracterstica
Polinomio caracterstico Polinomio caracterstico
37 37
0
1
1 0
= + + +

k
k k
a x a x a L
k
k k
a x a x a x p + + + =

L
1
1 0
) (
Ecuacin caracterstica Ecuacin caracterstica
Teorema Fundamental del lgebra: Teorema Fundamental del lgebra:
Consideremos una raz del polinomio caracterstico, Consideremos una raz del polinomio caracterstico, r r
ii
p( p(r r
ii
) = 0 ) = 0

=
=
k
i
i
r x x p
1
) ( ) (
p( p(r r
ii
) = 0 ) = 0
Por tanto, Por tanto, rr
ii
n n
es solucin de la recurrencia. es solucin de la recurrencia.
Adems, las combinaciones lineales de las soluciones de Adems, las combinaciones lineales de las soluciones de
la recurrencia tambin son soluciones: la recurrencia tambin son soluciones:
Cuando todos los Cuando todos los r r
ii
son son distintos distintos, ,
stas son las stas son las nicas nicas soluciones soluciones
38 38

=
=
k
i
n
i i n
r c t
1
Ecuacin caracterstica Ecuacin caracterstica
Resolucin de recurrencias Resolucin de recurrencias
mediante el mtodo de la ecuacin caracterstica: mediante el mtodo de la ecuacin caracterstica:
1. 1. Se obtiene la ecuacin caracterstica asociada a la Se obtiene la ecuacin caracterstica asociada a la
recurrencia que describe el tiempo de ejecucin T(n). recurrencia que describe el tiempo de ejecucin T(n). recurrencia que describe el tiempo de ejecucin T(n). recurrencia que describe el tiempo de ejecucin T(n).
2. 2. Se calculan las k races del polinomio caracterstico. Se calculan las k races del polinomio caracterstico.
3. 3. Se obtiene la solucin a partir de las races del Se obtiene la solucin a partir de las races del
polinomio caracterstico. polinomio caracterstico.
4. 4. Se determinan las constantes a partir de las k Se determinan las constantes a partir de las k
condiciones iniciales. condiciones iniciales.
39 39
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo: Sucesin de Ejemplo: Sucesin de Fibonacci Fibonacci

+
= =
=

caso otro en
1 0 si ,
2 1 n n
n
f f
n n n
f
40 40
0
2 1
=
n n n
f f f
1 ) (
2
= x x x p
2
5 1
2
5 1
2 1

=
+
= r y r
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo: Sucesin de Ejemplo: Sucesin de Fibonacci Fibonacci
n n
n
r c r c f
2 2 1 1
+ =

= + 0
41 41

)
`

= +
= +
1
0
2 2 1 1
2 1
c r c r
c c
5
1
5
1
2 1
= = c y c
(
(

|
|

\
|

|
|

\
|
+
=
n n
n
f
2
5 1
2
5 1
5
1
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo: Ejemplo:

+
=
=
=

caso otro en , 4 3
1 , 5
0 , 0
2 1 n n
n
t t
n
n
t
A partir de las condiciones iniciales: c A partir de las condiciones iniciales: c
11
= = - -1, c 1, c
22
= 1 = 1
42 42
0 4 3
2 1
=
n n n
t t t
) 4 )( 1 ( 4 3
2
+ = x x x x
n n
n
c c t 4 ) 1 (
2 1
+ =
Ecuacin caracterstica Ecuacin caracterstica
Races mltiples Races mltiples
Supongamos que las races del polinomio caracterstico Supongamos que las races del polinomio caracterstico
NO NO son todas distintas. son todas distintas.
r r
ii
con multiplicidad m con multiplicidad m
ii
r r
ii
con multiplicidad m con multiplicidad m
ii
43 43

=
=
l
i
m
j
n
i
j
ij n
i
r n c t
1
1
0
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo: Ejemplo:

+
=
=

caso otro en 4 8 5
2 1 0 si ,
3 2 1 n n n
n
t t t
, n n
t
3 2 1
0 4 8 5 = +

t t t t
n n n n
A partir de las condiciones iniciales: c A partir de las condiciones iniciales: c
11
= = - -2, c 2, c
22
= 2, c = 2, c
33
= = - -1/2 1/2
44 44
2 2 3
3 2 1
) 2 )( 1 ( 4 8 5
0 4 8 5
= +
= +

x x x x x
t t t t
n n n n
n n n
n
n c c c t 2 2 ) 1 (
3 2 1
+ + =
2 2 2
1 1
=
+ n n
n
n t
Ecuacin caracterstica Ecuacin caracterstica
Recurrencias no homogneas Recurrencias no homogneas
A partir de A partir de
donde b es una constante y p(n) un polinomio de grado d donde b es una constante y p(n) un polinomio de grado d
) (
1 1 0
n p b t a t a t a
n
k n k n n
= + + +

L
donde b es una constante y p(n) un polinomio de grado d donde b es una constante y p(n) un polinomio de grado d
derivamos el polinomio caracterstico derivamos el polinomio caracterstico
que resolveremos igual que en el caso homogneo. que resolveremos igual que en el caso homogneo.
45 45
1 1
1 0
) )( ( ) (
+
+ + + =
d
k
k k
b x a x a x a x p L
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo: Ejemplo:
Las torres de Las torres de Hanoi Hanoi
hanoi hanoi ( (int int n, n, int int inicial, inicial, int int final, final, int int tmp tmp) )
{ {
hanoi hanoi (n (n 1, inicial, 1, inicial, tmp tmp, final) , final)
final final inicial inicial
hanoi hanoi (n (n 1, 1, tmp tmp, final, inicial) , final, inicial)
} }
46 46

+
=
=
caso otro en , 1 ) 1 ( 2
0 , 0
) (
n T
n
n T
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo: Ejemplo:
Las torres de Las torres de Hanoi Hanoi
) 1 )( 2 ( ) ( = x x x p
1 2
1
=
n n
t t
47 47
2 1
2 ) ( c c n T
n
+ =
) 1 )( 2 ( ) ( = x x x p
n n
n
c c t 1 2
2 1
+ =
1
1
1 2
0
1 ) 1 (
0 ) 0 (
2
1
2 1
2 1
=
=

)
`

= +
= +

)
`

=
=
c
c
c c
c c
T
T
1 2 ) ( =
n
n T
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo: Ejemplo:
0 ; 2
0 1
= + =

t n t t
n n
2
) 1 )( 2 ( ) ( = x x x p
n n n
n c c c t 1 1 2 + + =
48 48
n n n
n
n c c c t 1 1 2
3 2 1
+ + =
1
2
2
4 2 4
1 2
0
3
2
1
3 2 1
3 2 1
2 1
=
=
=

= + +
= + +
= +
c
c
c
c c c
c c c
c c
2 2
1
=
+
n t
n
n
Ecuacin caracterstica Ecuacin caracterstica
Recurrencias no homogneas Recurrencias no homogneas
bb
11
, , , , bb
s s
constantes constantes
) ( ... ) (
1 1 1 1 0
n p b n p b t a t a t a
s
n
s
n
k n k n n
+ + = + + +

L
bb
11
, , , , bb
s s
constantes constantes
pp
ii
(n) (n) polinomio de grado polinomio de grado dd
ii
Polinomio caracterstico: Polinomio caracterstico:
49 49
1 1
1
1
1 0
) ( ) )( ( ) (
1
+ +
+ + + =
s
d
s
d
k
k k
b x b x a x a x a x p L L
Ecuacin caracterstica Ecuacin caracterstica
Cambios de variable Cambios de variable
Cuando las recurrencias no se ajustan al tipo conocido Cuando las recurrencias no se ajustan al tipo conocido

> +
=
=
1 , ) 2 / ( 3
1 , 1
) (
n n n T
n
n T
aplicamos un cambio de variable aplicamos un cambio de variable nn = 2 = 2
ii
que nos permite definir una nueva recurrencia: que nos permite definir una nueva recurrencia:
50 50

> + 1 , ) 2 / ( 3 n n n T
) 2 (
i
i
T t =
Ecuacin caracterstica Ecuacin caracterstica
Cambios de variable Cambios de variable
i i
i
i
i i
c c t t t 2 3 2 3
2 1 1
+ = + =

Finalmente, deshacemos el cambio de variable: Finalmente, deshacemos el cambio de variable: ii = log = log
22
((nn))
51 51
n c n c c c n T
n n
2
) 3 ( log
1
) ( log
2
) ( log
1
2 2 2
2 3 ) ( + = + =
) ( O es ) (
) 3 ( log
2
n n T
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo Ejemplo
i i i
+ = + =

> +
=
=
1 , ) 2 / ( 4
1 , 1
) (
n n n T
n
n T
) 2 (
i
T t =
52 52
i i
i
i
i i
c c t t t 2 4 2 4
2 1 1
+ = + =

n c n c n c n c c c n T
n n
2
2
1 2
) 4 ( log
1
) ( log
2
) ( log
1
2 2 2
2 4 ) ( + = + = + =
) ( O es ) (
2
n n T
) 2 (
i
i
T t =
Ecuacin caracterstica Ecuacin caracterstica
Ejemplo Ejemplo
i i i
+ = + =

> +
=
=
1 , ) 2 / ( 2
1 , 1
) (
n n n T
n
n T
) 2 (
i
T t =
53 53
i i
i
i
i i
i c c t t t 2 2 2 2
2 1 1
+ = + =

) ( log 2 ) ( log 2 ) (
2 2 1
) ( log
2 2
) ( log
1
2 2
n n c n c n c c n T
n n
+ = + =
) log ( O es ) (
2
n n n T
) 2 (
i
i
T t =
Ecuacin caracterstica Ecuacin caracterstica
Recurrencia divide y vencers Recurrencia divide y vencers
a.k.a. a.k.a. the the master master method method
k
cn
b
n
aT n T +
|

\
|
= ) (
54 54
b
\
0 , 0 , 2 , 1 con > c k b a

>
=
<
=
k a
k
b
k
k k
b a n
b a n n
b a n
n T
b
) (
)), ( log (
), (
) (
) ( log
Ecuacin caracterstica Ecuacin caracterstica
Transformaciones del rango Transformaciones del rango

\
|
=
=
caso otro en ,
2
1 , 3 / 1
) (
2
n
nT
n
n T
Inicialmente, realizamos un cambio de variable: Inicialmente, realizamos un cambio de variable:
Como esta recurrencia no es lineal y el coeficiente 2 Como esta recurrencia no es lineal y el coeficiente 2
ii
no es constante, tomamos logaritmos: no es constante, tomamos logaritmos:
55 55

\
2
2
1
1 2
2 ) 2 ( 2 ) 2 (

= = =
i
i i i i
i
t T T t
1 1
2 ) log( 2 ) log(

+ = + = =
i i i i
u i t i t u
Ecuacin caracterstica Ecuacin caracterstica
Transformaciones del rango Transformaciones del rango
1
2

+ =
i i
u i u
i i i
i
i c c c u 1 1 2
3 2 1
+ + =
i u u
i i
=
1
2
Sustituyendo en la recurrencia para Sustituyendo en la recurrencia para uu
ii
, obtenemos: , obtenemos:
56 56
i
i c c c u 1 1 2
3 2 1
+ + =
2 ; 1
2 3
= = c c
)) 1 ( 2 ( 2 2 2
3 2
1
1 3 2 1 1
+ + + + = =

i c c c i c c c u u i
i i
i i
2 3
) 2 ( c c i i =
2 3 3
2 ) 1 ( c c i c = +
Ecuacin caracterstica Ecuacin caracterstica
Transformaciones del rango Transformaciones del rango
Deshacemos los cambios: Deshacemos los cambios:
2 2
1
= i c u
i
i
2 2
1
2 2

= =
i c u
i
i
t
A partir de las condiciones iniciales: A partir de las condiciones iniciales:
57 57
2 2
1
2 2

= =
i c u
i
i
t
n
t n T
n c
n n c
n
4
2
2 ) (
1
2 1
2
2 log
) ( log
= = =

3 log 2 ) 3 / 4 ( log 3 / 1 4 / 2 ) 1 (
2 2 1
1
= = = = c T
c
n
n
n
n n n c
n n n n
n T
3 4
2
2 4
2
4
2
4
2
) (
2
) 3 (log
2 ) 3 log 2 (
2
2 1
= = = =

Apndice: Frmulas tiles Apndice: Frmulas tiles
Progresiones aritmticas Progresiones aritmticas
d a a
i i
+ =
+1

+ =
n
a a n a ) (
1
58 58

=
+ =
n
i
n i
a a n a
1
1
) (
2
1
) 1 (
2
1
1
+ =

=
n n i
n
i
Apndice: Frmulas tiles Apndice: Frmulas tiles
Progresiones geomtricas Progresiones geomtricas
i i
a r a =
+1
) 1 (
1

r a
n
n
59 59
1
) 1 (
1
1
1


=
+
=

r
r a
a
n
n
i
i
1
1
1

=
+
=

b
b b
b
n
n
i
i
Apndice: Frmulas tiles Apndice: Frmulas tiles
Sumatorias Sumatorias
na a
n
i
=

=1

=
n n
i f a i f a ) ( ) (
60 60

= =
=
i i
i f a i f a
1 1
) ( ) (
( )

+ = + b a b a

=
i j
j i
i j
j i
b a b a
Apndice: Frmulas tiles Apndice: Frmulas tiles
Sumatorias Sumatorias
) 1 (
2
1
1
+ =

=
n n i
n
i
) 1 2 )( 1 (
6
1
2
+ + =

n n n i
n
61 61
) 1 2 )( 1 (
6
1
+ + =

=
n n n i
i
2
1
3
) 1 (
2
1
(

+ =

=
n n i
n
i
) 2 )( 1 (
3
1
) 1 (
1
+ + = +

=
n n n i i
n
i
Apndice: Frmulas tiles Apndice: Frmulas tiles
Potencias Potencias
z y z y
x x x =
+
z y z y
x x x / =

y z z y z y
x x x ) ( ) (

= =
Ojo! Ojo!
62 62
y z z y z y
x x x ) ( ) (

= =
y z
z y
x x
Apndice: Frmulas tiles Apndice: Frmulas tiles
Logaritmos Logaritmos
) ( log
) ( log
) ( log
a
n
n
b
b
a
=
63 63
) ( log ) ( log n m
a a
m n =
) ( log ) ( log ) ( log m n m n
a a a
+ =
) ( log ) ( log ) / ( log m n m n
a a a
=
) ( log ) ( log n p n
a
p
a
=

Você também pode gostar