Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Analisis de Algoritmos
Analisis de Algoritmos
de Algoritmos
Objetivo:
Se introducen los conceptos de
complejidad de algoritmos y se exponen las
ms usuales metodologas para calcular
complejidades.
1
Algoritmia
Diseo de mtodos para resolver problemas
Realizacin (implementacin)
Algoritmo
Historia: el termino algoritmo proviene de Al
Khowarizmi, matemtico rabe del IX siglo
Algoritmo
Definicin:
Conjunto de reglas operativas, su aplicacin
permite resolver un problema dado por medio
de un nmero finito de operaciones.
Especificacin de esquema de clculo en forma
de una secuencia de operaciones elementales
ordenada, finita y precisa.
Algoritmo
Propiedades:
Las entradas: un algoritmo toma valores de entrada en
un conjunto definido.
La salida: es la solucin del problema inicial
Complejidad en tiempo
La mayora de los algoritmos transforman entradas en
una salida.
La complejidad en tiempo de un algoritmo es funcin del
tamao de las entradas
La complejidad mediana es difcil de obtener en general
Ms bien se estudia la complejidad en lo peor de los
casos:
ms fcil de analizar
crucial en muchas aplicaciones: juegos, finanzas, sw crtico..
11
Un poco de clculo
Calculamos los valores de esta funcin
f(n) = n2 + 100 n + log10 n + 1000
Para
12
Orden de crecimiento
f(n) = n2 + 100 n + log10 n + 1000
13
14
La tabla queda as ..
(los tiempos estn dados en segundos salvo cuando
dice otra cosa)
15
16
=============================
POLINOMIAL = bueno
EXPONENCIAL = malo
=============================
17
18
Anlisis de Algoritmos
Qu es Complejidad?.
Ordenes de Complejidad.
Complejidad de instrucciones bsicas.
Algunos problemas clsicos.
19
Anlisis de Algoritmos
Qu es Complejidad?
Ordenes de Complejidad.
Complejidad de instrucciones bsicas.
Un problema clsico.
20
Complejidad
Cmo se mide la complejidad?
La complejidad est asociada a un
problema o a una solucin del problema?
La complejidad depende de la
implementacin?
21
Complejidad
Qu se entiende por complejidad?
La Complejidad es una medida de la
cantidad que consume un algoritmo de un
recurso determinado.
En general hablamos de Complejidad
Espacial o Complejidad Temporal.
22
Complejidad
Problema: Pregunta sobre un conjunto de
datos.
Solucin:
23
Complejidad
Problema: X = { (p(x), r(x)) | x D }.
Conjunto de pares de preguntas respuestas
Complejidad
Problema: X = { ((a, k), i) | a=A [0..n-1]
0 i n-1
a [i] = k}.
Solucin:
Complejidad
Si el recurso es espacio:
Cantidad de memoria requerida para
una ejecucin.
n + 2.
Si el recurso es tiempo:
Cantidad de tiempo requerido para
una ejecucin.
depende!
26
Complejidad en Tiempo
T (algo, d) = tiempo de ejecucin del algoritmo algo
aplicado sobre los datos d
Complejidad en el peor caso:
T
MAX (algo, n) = max {T(algo, d), d de tamao n}
Complejidad en el mejor caso:
T
MIN (algo, n) = min {T(algo, d), d de tamao n}
Complejidad mediana:
T
MED (algo, n) = p(d) T(algo, d)
d
Operaciones elementales
Operaciones bsicas efectuadas por el
algoritmo, ejemplo:
Ejercicio de conteo
Cuntas veces se repite el ciclo?
for (int i = 0; i < 10; i++)
suma = suma + A[i];
for (int i = 0; i < 10; i++)
for (int j = 0; j < 20; j++)
suma = suma + B[i][j];
29
Ejercicio de conteo
Cuntas veces se repite el ciclo?
for (int i = 0; i < n; i++)
suma = suma + A[i];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
suma = suma + B[i][j];
30
31
Complejidad
Bsqueda en un arreglo:
{Pre Q: a=Arr [0..n-1] x=X}
i = 0;
do (i n arr[i]x) i = i+1 od;
{Pos R: (i=n XArr) (0 i <n Arr[i]=X)}
Operacin bsica: Comparacin.
Si X est en la posicin k k +1 comparaciones.
Si X no est en Arr n comparaciones.
34
Complejidad
Bsqueda en un arreglo:
TBLI (n) = n
en el peor caso.
en el caso promedio.
Complejidad
Bsqueda en un arreglo:
TBLI (n) = n a(n+1)/2
en el caso promedio.
36
Complejidad
Bsqueda en un arreglo:
TBLI (n) = n a(n+1)/2
en el caso promedio.
Casos interesantes:
X A a = 1 : TBLI (n) = (n+1)/2
a = : TBLI (n) 3n/4
X A a = 0 : TBLI (n) = n
37
Anlisis de Algoritmos
Qu es Complejidad?.
Ordenes de Complejidad.
Complejidad de instrucciones bsicas.
Un problema clsico.
38
Ordenes de Complejidad
Algoritmo 1 : T1(n) = 1000 n
Algoritmo 2 : T2(n) = 200 n log n
Algoritmo 3 : T3(n) = 10 n2
Algoritmo 4 : T4(n) = 2n
2
1
3
9
1
100
39
1000 n
200 n log n
10 n2
2n
40
Ordenes de Complejidad
Establecer la complejidad precisa es difcil.
41
Ordenes de Complejidad
g
T
Anlisis de Algoritmos
Qu es Complejidad?.
Ordenes de Complejidad.
Complejidad de instrucciones bsicas.
Un problema clsico.
43
Complejidad de Instrucciones
Bsicas
for (i = 0; i<n ; i ++ ) {
for (j = i, j<n; j ++) {
if a[j-1] > a[j]
{ temp = a[j];
a[j] = a[j-1];
a[j-1] = temp; }
fi
rof
rof
O(n2)
O(n-1-i)
O(1)
O(1)
44
Complejidad de SORT
Sort Burbuja es O(n2).
Sort por Fusin es O(n log n)
45