Professional Documents
Culture Documents
Eficiencia de Algoritmos
10
Anlisis de Algoritmos
12
Complejidad
10
16
18
Algoritmos de Grafos
14
Evaluacin
Eficiencia de Algoritmos
Pasos para resolver un problema usando algoritmos:
PASOS
ETAPA
DESCRIPCIN
Anlisis del
Problema
Diseo del
Algoritmo
Codificacin
Compilacin y
Ejecucin
Verificacin
Depuracin
Anlisis de Algoritmos
Dos programas que hacen lo mismo, cmo se
podran comparar?
1. Eficiencia:
Tiempo de ejecucin.
Instruccin k;
Notacin Asinttica.
Es la notacin aceptada por la comunidad cientfica para describir el comportamiento en eficiencia (o complejidad) de un
algoritmo.
Describe en forma sinttica (sntesis) el comportamiento de la funcin que con la variable de entrada, determina el nmero de
operaciones que realiza el algoritmo.
Complejidad Temporal
Tiempo (o espacio) requerido por un algoritmo, expresado en base a una funcin que depende del tamao del problema.
WHILE i = 1 TO n-1
m = i
WHILE j = i+1 TO n
IF lista[j] < lista[m] THEN
m = j
END
intercambiar (i, m)
END
WHILE i = 2 TO n
aux = A[i]
j = i - 1
WHILE (j >= 0) AND (Aux < A[j])
A[j+1] = A[j]
j = j - 1
END
A[j+1] = aux
END
http://commons.wikimedia.org/wiki/File:Sel
ection-Sort-Animation.gif
http://commons.wikimedia.org/wiki/File:Insertion-sort-example300px.gif
Ventajas:
Desventajas:
Lento.
Realiza numerosas comparaciones.
Fcil implementacin.
No requiere memoria adicional.
Realiza pocos intercambios.
Rendimiento constante: poca
diferencia entre el peor y el mejor
caso.
Fcil implementacin.
Requerimientos mnimos de memoria
Lento.
Realiza numerosas comparaciones.
Algoritmo lento, pero puede ser de utilidad para listas que
estn ordenadas o semi ordenadas, porque realiza muy pocos
desplazamientos.
Benchmarking
Consiste en implementar los algoritmos en cuestin, ejecutarlos y determinar
cul de ellos requiere menos recursos. Esta solucin parece ser la ms sencilla e
intuitiva, sin embargo tiene varios inconvenientes
Pueden existir muchos algoritmos para resolver un mismo problema, y resulta
muy costoso y tedioso implementarlos todos para poder llevar a cabo la
comparacin.
Es una tcnica muy especfica, ya que determina el desempeo de un programa
particular dependiendo de varios factores:
El computador
El lenguaje de programacin
El compilador
Las habilidades del programador
El conjunto de datos de entrada
A partir del Benchmark es difcil predecir el comportamiento de un programa en otro
ambiente
Peor caso:
Los casos de datos de entrada que maximizan la cantidad de trabajo realizado
por un algoritmo.
Mejor caso:
Los casos de datos de entrada que minimizan la cantidad de trabajo realizado
por un algoritmo.
Caso promedio:
El valor medio de la cantidad de trabajo realizado por un algoritmo. Se debe
tener en cuenta la distribucin probabilstica de los datos de entrada que se
manejan.
Denicin:
y = 2*x -1 x = x + 1
operaciones lgicas
c=a=b
If (x = y) then
a=b
a = b(2) + 1
a=1
C(3,2) = 0
print, put
rdenes de Complejidad
Se dice que O(f(n)) define un "orden de complejidad. Escogeremos como representante
de este orden a la funcin f(n) ms sencilla del mismo. As tendremos
O(1)
O(log n)
O(n)
O(n log n)
O(n2)
O(na)
O(an)
O(n!)
orden constante
orden logartmico
orden lineal
orden cuadrtico
orden polinomial (a > 2)
orden exponencial (a > 2)
orden factorial
1)
void ejemplo1 (int n)
{
int i, j, k;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
{
C[i][j] = 0;
for (k = 0; k < n; k++)
C[i][j] += A[j][k] * B[k][j];
}
}
2)
long ejemplo2 (int n)
{
int i, j, k;
long total = 0;
for (i = 1; i < n; i++)
for (j = i+1; j <= n; j++)
for (k = 1; k <= j; k++)
total += k*i;
return total;
}
4)
int ejemplo4 (int n)
{
if (n <= 1)
return 1;
else
return (ejemplo4(n - 1) + ejemplo4(n - 1));
}
3)
void ejemplo3 (int n)
{
int i, j, x=0, y=0;
for (i = 1; i <= n; i++)
if (i % 2 == 1)
{
for (j = i; j <= n; j++)
x++;
for (j = 0; j < i; j++)
y++;
}
}
5)
int ejemplo5 (int n)
{
if (n == 1)
return n;
else
return (ejemplo5(n/2) + 1);
}
Ejemplo 8
siempre 3
instrucciones
Ejemplo 6
2 ciclos anidados.
c/u se ejecuta n veces
en el interior del segundo
hay 2 instrucciones.
Funcin: f(n) = 2n2+1.
7) Libro2.xlsx
Algoritmo
Tiempo
Complejidad
200
O(n)
O(n )
Ejemplo 10 Bsqueda
Mejor: O(3+2=5)
Peor: O(2n+3)