Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2 Eficiencia Importante
2 Eficiencia Importante
Comparacin de algoritmos
Principio de invarianza
Eficiencia
Notaciones asintticas
Clculo de la eficiencia de un algoritmo
Resolucin de recurrencias:
Mtodo de la ecuacin caracterstica
Recurrencias homogneas
Recurrencias no homogneas
Cambios de variable
Transformaciones del rango
Apndice: Frmulas tiles
Comparacin de algoritmos
A menudo dispondremos de ms de un algoritmo para
resolver un problema dado, con cul nos quedamos?
USO DE RECURSOS
Computacionales:
No
Tiempo de ejecucin
Espacio en memoria
computacionales:
Esfuerzo de desarrollo (anlisis, diseo & implementacin)
2
Comparacin de algoritmos
Factores que influyen en el uso de recursos
Recursos
Recursos
computacionales:
no computacionales:
Principio de invarianza
Eficiencia
Eficiencia
Tipos de anlisis
Cmo medimos el tiempo de ejecucin de un algoritmo?
Mejor caso
En condiciones ptimas (no se usa por ser demasiado optimista).
Peor caso
En el peor escenario posible (nos permite acotar el tiempo de ejecucin).
Caso promedio
Caso difcil de caracterizar en la prctica.
Anlisis probabilstico
Asume una distribucin de probabilidad sobre las posibles entradas.
Anlisis amortizado
Tiempo medio de ejecucin por operacin
sobre una secuencia de ejecuciones sucesivas.
Eficiencia
Ejemplo
Algoritmo 1:
Algoritmo 2:
Notaciones asintticas
Notaciones asintticas
Orden de eficiencia
Un algoritmo tiene un tiempo de ejecucin de orden
f(n),, para una funcin dada f, si existe una constante
f(n)
positiva c y una implementacin del algoritmo capaz
de resolver cada caso del problema en un tiempo
acotado superiormente por cf (n)
(n),, donde n es el
tamao del problema considerado.
Notaciones asintticas
Notacin O
Decimos que una funcin T(n) es O(f(n))
si existen constantes n0 y c
tales que T(n) cf(n) para todo n n0:
T(n) es O(f(n))
cR, n0N, tal que n>n0N, T(n) cf(n)
10
Notaciones asintticas
Ejemplos
T(n) = 3n
T(n) es O(n), O(n log n), O(n2), O(n3) y O(2n).
T(n) = (n+1)2
T(n) es O(n2), O(n3) y O(2n).
T(n) no es O(n) ni O(n log n).
T(n) = 32n2 + 17n + 32(n)
(n) = 32n2 + 17n + 32.
T(n) es O(n2) pero no es O(n).
T(n) = 3n3 + 345n2
T(n) es O(n3) pero no es O(n2).
T(n) = 3n
T(n) es O(3n) pero no es O(2n).
11
Notaciones asintticas
Notaciones y
Notacin (cota inferior)
T(n) es (f(n)) cuando
cR+, n0N: nn0 T(n) cf(n)
cf(n)
Notacin (orden exacto)
T(n) es (f(n)) cuando
T(n) es O(f(n)) y T(n) es (f(n))
12
rdenes de eficiencia
rdenes de eficiencia ms habituales
N
O(log2 n)
O(n2)
O(n log2 n)
O(n2)
O(2n)
O(n!)
10
3 s
10 s
30 s
0.1 ms
1 ms
4s
25
5 s
25 s
0.1 ms
0.6 ms
33 s
1011 aos
50
6 s
50 s
0.3 ms
2.5 ms
36 aos
100
7 s
100 s
0.7 ms
10 ms
1017 aos
1000
10 s
1 ms
10 ms
1s
10000
13 s
10 ms
0.1 s
100 s
100000
17 s
100 ms
1.7 s
3 horas
1000000
20 s
1s
20 s
12 das
13
rdenes de eficiencia
Orden lineal: O(n)
Tiempo de ejecucin proporcional al tamao de la entrada.
14
rdenes de eficiencia
Orden cuadrtico: O(n2)
Aparece cuando tenemos que enumerar todas las
parejas posibles de elementos de un conjunto.
Ejemplo: Dado un conjunto de puntos en el plano (x1, y1), ,
(xn, yn), encontrar la pareja ms cercana.
min (x1 - x2)2 + (y1 - y2)2
for i = 1 to n {
for j = i+1 to n {
d (xi - xj)2 + (yi - yj)2
if (d < min)
min d
}
}
15
rdenes de eficiencia
rdenes O(log n) y O(n log n)
Aparecen en muchos algoritmos recursivos
p.ej. Estrategia divide y vencers
Ejemplos:
O(log n)
O(n log n)
Bsqueda binaria
Mergesort,, Heapsort
Mergesort
Heapsort
Clculo de la eficiencia
Operacin elemental
Operacin de un algoritmo cuyo tiempo de ejecucin
se puede acotar superiormente por una constante.
x max
max{A[k],
{A[k], 0 <= k < n}
17
Clculo de la eficiencia
Operaciones elementales
sumas y productos
dependen de la longitud de los operandos.
operandos.
Clculo de la eficiencia
Reglas de clculo de la eficiencia
1.
2.
3.
4.
5.
6.
Sentencias simples
Bloques de sentencias
Sentencias condicionales
Bucles
Llamadas a funciones
Funciones recursivas
19
Clculo de la eficiencia
Reglas de clculo de la eficiencia
1. Sentencias simples
Consideraremos que cualquier sentencia simple
(lectura, escritura, asignacin, etc.)
va a consumir un tiempo constante, O(1)
O(1),,
salvo que contenga una llamada a una funcin.
20
Clculo de la eficiencia
Reglas de clculo de la eficiencia
2. Bloques de sentencias
21
Clculo de la eficiencia
Reglas de clculo de la eficiencia
3. Sentencias condicionales
El tiempo de ejecucin de una sentencia condicional
es el mximo del tiempo del bloque if
y del tiempo del bloque else
else..
Si el bloque if es O(f(n)) y el bloque else es O(g(n)),
la sentencia condicional ser O(max
O(max{f(n),
{f(n), g(n)}).
g(n)}).
22
Clculo de la eficiencia
Reglas de clculo de la eficiencia
4. Bucles
Tiempo de ejecucin
= Suma de los tiempos invertidos en cada iteracin
23
Clculo de la eficiencia
Reglas de clculo de la eficiencia
5. Llamadas a funciones
Si una determinada funcin P tiene una eficiencia de
O(f(n)), cualquier llamada a P es de orden O(f(n)).
24
Clculo de la eficiencia
Reglas de clculo de la eficiencia
6. Funciones recursivas
Las funciones de tiempo asociadas a funciones
recursivas son tambin recursivas.
p.ej.
Clculo de la eficiencia
Ejemplo
int fact
fact(
(int n)
{
if (n <= 1)
return 1;
else
return (n * fact
fact(n
(n 1));
}
Clculo de la eficiencia
T(n)
= 1 + T(n - 1)
= 1 + (1 + T(nT(n-2)) = 2 + T(nT(n-2)
= 2 + (1 + T(nT(n-3)) = 3 + T(nT(n-3)
= i + T(nT(n-i)
= (n(n-1) + T(n (n
(n--1)) = (n(n-1) + 1
27
Clculo de la eficiencia
Ejemplo
int E(int
E(int n)
{
if (n == 1)
return 0;
else
return E(n/2) + 1;
}
n =1
1,
T (n) =
n
1+ T n > 1
T(n) es O (log2 n)
28
Clculo de la eficiencia
T(n) = T(n/2) + 1
= (T(n/4) + 1) + 1 = T(n/4) + 2
= (T(n/8) + 1) +2 = T(n/8) + 3
= T(n/2i) + i
= T(n/2log(n)) + log2(n)
= T(1) + log2(n)
Por tanto, T(n) es O(log n)
29
Clculo de la eficiencia
El mismo desarrollo se podra realizar ms cmodamente
con un cambio de variable: n=2m m = log2(n)
T(2m) = T(2m-1) + 1=
= (T(2m-2) + 1) + 1
= (T(2m-3) + 1) + 2
= T(2m-i) + i
= T(2m-m) + m
= T(1) + log2(n)
30
Clculo de la eficiencia
Ejemplo
n
T ( n ) = T + n 2 , n 2; T (1) = 1
2
Cambio de variable:
n = 2m
n2 = (2m)2=(22)m=4m
31
Clculo de la eficiencia
Ejemplo
n
T ( n ) = T + n 2 , n 2; T (1) = 1
2
T (2 m ) = T (1) + [41 + L + 4 m 2 + 4 m 1 + 4 m ]
4m+ 2 1 42 4m 1
=
= 1+ 4 = 4 =
4
1
3
3
i =1
i =0
m
42 2 1
= n
3
3
T(n) es O(n2)
32
Resolucin de recurrencias
Tcnicas de resolucin de recurrencias
Mtodo de sustitucin
1.
2.
3.
4.
Desarrollar la expresin
Adivinar la frmula de la expresin
Demostrar por induccin
Resolver constantes
rbol de recursividad
Representacin grfica intuitiva.
Expansin de recurrencias
Mtodo algebraico equivalente al rbol de recursividad.
33
Mtodo de sustitucin
O (1)
si n = 1
T ( n) =
4T (n / 2) + n si n > 1
T(n) es O(n3)?
Suponemos que T(k) ck3 para k<n
Demostramos por induccin que T(n) cn3
T(n) = 4T(n/2) + n
4c(n/2)3 + n = (c/2)n3 + n = cn3 ((c/2)n3 n)
cn3 siempre que ((c/2)n3 n)>0 (p.ej. c2 y n1)
PROBLEMA: Podramos encontrar una cota superior ms ajustada?
Sugerencia: Probar con T(n) cn2 y T(n) c1n2-c2n
34
rbol de recursividad
T (n ) = T ( n / 4) + T ( n / 2) + n 2
35
Ecuacin caracterstica
Recurrencias homogneas lineales
con coeficientes constantes
a0tn + a1tn 1 + L + ak tn k = 0
f n = f n 1 + f n 2
f n f n 1 f n 2 = 0
36
Ecuacin caracterstica
Suposicin: tn = xn
a0 x n + a1 x n 1 + L + ak x n k = 0
Se satisface si x=0 o bien
a0 x k + a1 x k 1 + L + ak = 0
ecuacin caracterstica
Polinomio caracterstico
p( x ) = a0 x k + a1 x k 1 + L + ak
37
Ecuacin caracterstica
Teorema Fundamental del lgebra:
p( x ) = ( x ri )
i =1
p(
p(rri) = 0
Por tanto, rin es solucin de la recurrencia.
Adems, las combinaciones lineales de las soluciones de
la recurrencia tambin son soluciones:
k
tn = ci ri n
i =1
38
Ecuacin caracterstica
Resolucin de recurrencias
mediante el mtodo de la ecuacin caracterstica:
1.
2.
3.
4.
Ecuacin caracterstica
Ejemplo: Sucesin de Fibonacci
n,
fn =
f n 1 + f n 2
si n = 0 n = 1
en otro caso
f n f n 1 f n 2 = 0
p( x ) = x 2 x 1
r1 =
1+ 5
2
r2 =
1 5
2
40
Ecuacin caracterstica
Ejemplo: Sucesin de Fibonacci
f n = c1r1n + c2 r2n
c1
c2
r1c1 + r2c2
= 0
= 1
c1 =
1
5
y c2 =
1
5
n
n
1 1+ 5 1 5
fn =
5 2 2
41
Ecuacin caracterstica
Ejemplo:
0,
n=0
tn =
5,
n =1
3t + 4t , en otro caso
n 2
n 1
tn 3tn 1 4tn 2 = 0
x 2 3x 4 = ( x + 1)( x 4)
tn = c1 ( 1) n + c2 4n
A partir de las condiciones iniciales: c1 = -1, c2 = 1
42
Ecuacin caracterstica
Races mltiples
Supongamos que las races del polinomio caracterstico
NO son todas distintas.
ri con multiplicidad mi
l
mi 1
tn = cij n j ri n
i =1 j = 0
43
Ecuacin caracterstica
Ejemplo:
n,
si n = 0, 1 2
tn =
5tn 1 8tn 2 + 4tn 3 en otro caso
tn = c1 (1)n + c2 2n + c3n 2n
A partir de las condiciones iniciales: c1 = -2, c2 = 2, c3 = -1/2
tn = 2n +1 n 2n 1 2
44
Ecuacin caracterstica
Recurrencias no homogneas
A partir de
p ( x ) = ( a0 x k + a1 x k 1 + L + ak )( x b) d +1
que resolveremos igual que en el caso homogneo.
45
Ecuacin caracterstica
Ejemplo:
Las torres de Hanoi
0,
n =0
T (n) =
2T (n 1) + 1, en otro caso
46
Ecuacin caracterstica
Ejemplo:
Las torres de Hanoi
t n 2t n 1 = 1
p ( x) = ( x 2)( x 1)
T (n) = c1 2 n + c2
t n = c1 2 n + c21n
T ( 0) = 0
T (1) = 1
c1
+ c2
2c1
+ c2
c1 = 1
= 0
c2 = 1
= 1
T ( n) = 2 n 1
47
Ecuacin caracterstica
Ejemplo:
tn = 2tn 1 + n;
t0 = 0
p( x ) = ( x 2)( x 1) 2
t n = c1 2 n + c21n + c3n1n
c1
+ c2
2c1 + c2
+ c3
4c1 + c2
+ 2c3
= 0
c1 = 2
= 1 c2 = 2
= 4
c3 = 1
tn = 2n +1 n 2
48
Ecuacin caracterstica
Recurrencias no homogneas
b1, , bs constantes
pi(n) polinomio de grado di
Polinomio caracterstico:
p ( x ) = ( a0 x k + a1 x k 1 + L + ak )( x b1 ) d1 +1 L ( x bs ) d s +1
49
Ecuacin caracterstica
Cambios de variable
Cuando las recurrencias no se ajustan al tipo conocido
1,
n =1
T (n) =
3T (n / 2) + n, n > 1
aplicamos un cambio de variable n = 2i
que nos permite definir una nueva recurrencia:
ti = T (2i )
50
Ecuacin caracterstica
Cambios de variable
ti = 3ti 1 + 2i
ti = c1 3i + c2 2i
Ecuacin caracterstica
Ejemplo
ti = T (2i )
1,
n =1
T ( n) =
4T ( n / 2) + n, n > 1
ti = 4ti 1 + 2i
ti = c1 4i + c2 2i
T (n) es O(n 2 )
52
Ecuacin caracterstica
Ejemplo
ti = T (2i )
1,
n =1
T ( n) =
2T ( n / 2) + n, n > 1
ti = 2ti 1 + 2i
ti = c1 2i + c2i 2i
Ecuacin caracterstica
Recurrencia divide y vencers
a.k.a. the master method
method
n
T ( n ) = aT + cn k
b
con a 1, b 2, k 0, c > 0
( n k ),
a < bk
T ( n ) = ( n k logb ( n )), a = bk
k
( n logb ( a ) )
>
a
b
54
Ecuacin caracterstica
Transformaciones del rango
n =1
1 / 3,
T ( n) = 2 n
nT , en otro caso
2
Inicialmente, realizamos un cambio de variable:
55
Ecuacin caracterstica
Transformaciones del rango
ui = i + 2ui 1
ui 2ui 1 = i
ui = c1 2i + c21i + c3i1i
Sustituyendo en la recurrencia para ui, obtenemos:
c3 = 1; c2 = 2
56
Ecuacin caracterstica
Transformaciones del rango
ui = c1 2i i 2
Deshacemos los cambios:
ti = 2 = 2
ui
c1 2i i 2
T (n) = tlog 2 ( n ) = 2
c1n log 2 n 2
2 c1n
=
4n
57
ai +1 = ai + d
n
1
ai = n (a1 + an )
2
i =1
n
i =
i =1
1
n (n + 1)
2
58
ai +1 = r ai
a1 (r n +1 1)
ai =
r 1
i =1
n
n +1
b
b
i
b
=
b 1
i =1
n
59
a = na
i =1
i =1
i =1
a f (i) = a f (i)
(a + b ) = a + b
a b = a b
i
60
1
n (n + 1)
2
i =1
n
1
2
i
=
n (n + 1)(2n + 1)
6
i =1
2
n
1
i 3 = n (n + 1)
i =1
n
1
i
i
+
=
n (n + 1)(n + 2)
(
1
)
3
i =1
i =
61
x y + z = x y x z
x yz = x y / x z
x y z = ( x y ) z = ( x z ) y
x
yz
Ojo!
62
log a (n) =
log b (n)
log b (a )
log a (n p ) = p log a (n )
n loga ( m ) = m loga ( n )
63