Documente Academic
Documente Profesional
Documente Cultură
Agenda
Introduccin
Tipos de Algoritmos
Medidas de eficiencia
Complejidad algoritmica
Tiempo de ejecucin
Notaciones asintticas
Anlisis de algoritmos no recursivos
Anlisis de algoritmos recursivos
Introduccin
Tipos de algoritmos
Algoritmos polinomiales
Algoritmos exponenciales
Factores externos:
A posteriori (emprico) :
Implementacin del algoritmo en un computador
Se comprueba para distintos tamaos de los datos del
problema y se compara
Se pierde tiempo en caso el algoritmo sea malo.
A priori (terico):
Complejidad algortmica?
Importancia de la eficiencia
Tiempo
10
1 dcima de segundo
20
2 minutos
30
> 1 da
40
> 3 aos
50
3570 aos
100
4.019,693,684,133,150 milenios
Importancia de la eficiencia
Tiempo
10
1 dcima de segundo
20
8 dcima de segundo
100
1.7 minutos
200
13.3 minutos
1000
1 da
Tiempo de ejecucin
t1
t2 * n
Demanda: T(n) = t1 + t2 * n
Generalmente los algoritmos contienen sentencias
condicionales o selectivas, por lo que hay ms de un valor
para T(n): "el peor caso, "el mejor caso" y "el caso
promedio.
Notaciones Asintticas
g(n) = 3n3+2n2
Constante
O(log n)
Logartmica
Bsqueda binaria
O(n)
Lineal
O(nlog n)
Casi lineal
QuickSort
O(n 2)
Cuadrtica
O(n 3)
Cbica
Producto de matrices
O(n k) k>3
Polinmica
O(k
n)
O(n!)
k>1
Exponencial
Factorial
Eficiente
Tratable
lg n
n lg n
n2
n3
2n
3n
n!
16
64
16
81
24
24
64
512
256
6.561
40.320
16
64
256
4.096
65.536
43.046.721
20.922.789.888.000
32
160
1.024
32.768
4.294.967.296
64
384
4.096
262.144
128
896
16.384
2.097.152
**
Regla de la suma
T1(n) = O(f1(n)) y T2(n) = O(f2(n))
Se puede decir que:
T1(n) + T2(n) = O(max(f1(n),f2(n)))
Por tanto.
Algoritmos iterativos
Instrucciones secuenciales
Secuencia de instrucciones
Instrucciones condicionales
Instrucciones condicionales
Instrucciones de iteracin
Ejercicios
PROCEDIMIENTO MatrizProducto (E entero :n; E entero . A[1..n,1..n], B[1..n,1..n];
E/S entero : C[1..n,1..n])
VARIABLES
entero: i,j,k
INICIO
I5 PARA i1 HASTA n
I4
PARA i1 HASTA n
I3
C[i,j] 0;
I2
PARA k1 HASTA n
I1
C[i,j] C[i,j] +A[i,k]* B[k,j];
FIN-PARA
FIN-PARA
FIN-PARA
FIN PROCEDIMIENTO
Llamadas a procedimientos
Ejemplo:
PROCEDIMIENTO PRINCIPAL (E entero: A[1..n,1..n], B[1..n,1..n]; E/S entero:
C[1..n,1..n])
VARIABLES entero: n, j, i, x
INICIO
LEER(n);
i 1;
MIENTRAS i<=n HACER
PARA ji HASTA n
A[i,j] j * 2;
FIN-PARA
ii+1
FIN-MIENTRAS
O(n3)
MatrizProducto( n,A,B,C);
FIN-PROCEDIMIENTO
Algoritmos recursivos
Funcin de recurrencia
Funcin de recurrencia
Por ejemplo:
entero : FUNCION Factorial (E entero: n)
INICIO
SI n=0 ENTONCES
RETORNA R 1
SINO
RETORNAR (n * Factorial (n-1))
FIN_SI
FIN_FUNCION
Factorial(n) =
T(n) =
1
Factorial (n-1) * n
1
T(n-1) +1
si n=0
en otro caso
si n=0
en otro caso
Funcin de
Recurrencia
Funcin de recurrencia
T(n) =
T(n)
1
T(n-1) +1
si n=0
en otro caso
rbol de recursin
rbol de recursin
Casos
progresivos
Caso base
P.e.
costo: n2
costo: 2(n/2)2 =n2/2
P.e.
En cada nivel
P.e.
En cada nivel