Você está na página 1de 37

Anlisis de

Algoritmos
Hugo Araya Carrasco
Hugo Araya Carrasco
O Datos: Informacin que se utiliza y se
almacena en cualquier programa.

O Algoritmos: Secuencia, proceso o manera
de manejar los datos.
Hugo Araya Carrasco
Estructura de Datos
O Conjunto de variables agrupadas y
organizadas para representar un
comportamiento.
O Facilitan el esquema lgico para
manipular los datos en funcin del
problema y el algoritmo para resolverlo.
O La eleccin del algoritmo y de las
estructuras de datos que manipular
estn muy relacionadas.

Estructura de datos = Datos + Algoritmos

Hugo Araya Carrasco
Anlisis de Algoritmos
O Es una herramienta para hacer la
evaluacin de un diseo.
O Permite establecer la calidad de un
programa y compararlo con otros
programas que resuelven un mismo
problema.
O Suponga que existen dos programas
P1 y P2 para resolver el mismo
problema.

Cul de los dos es mejor?.

Hugo Araya Carrasco
Anlisis de Algoritmos
Respuesta inicial:

Implementar ambos programas y
medir el tiempo que cada uno de ellos
consume para resolver el problema.

Modificar los datos de entrada,
promediar al final su desempeo para
establecer su comportamiento en el
caso promedio.
Hugo Araya Carrasco
Anlisis de Algoritmos
Problemas:
O Pueden existir muchos algoritmos para
resolver el problema.

O Costoso y casi imposible implementar
todos los programas.

O Modificacin de los datos puede ser una
labor sin sentido.
Hugo Araya Carrasco
Anlisis de Algoritmos
Objetivo:
Establecer una medida de la calidad de los
algoritmos, que permita compararlos sin la
necesidad de implementarlos

Esto implica asociar a cada algoritmo una
funcin matemtica que mida su eficiencia.

O Adems del tiempo de ejecucin, para medir la
eficiencia se debe considerar la cantidad de
memoria utilizada por el programa.
Hugo Araya Carrasco
Tiempo de ejecucin de un
algoritmos
Factores que tienen influencia en dicho valor.

O Velocidad de procesamiento.
O El compilador utilizado (calidad del cdigo
generado).
O La estructura del algoritmo.

Cules de estos factores no son parte de la
solucin?.
Hugo Araya Carrasco
Tiempo de ejecucin
Adems de la estructura del algoritmo, se debe
tener en cuenta que el numero de datos con los
cuales trabaja un programa influye en su tiempo de
ejecucin.

Un programa de ordenamiento de un arreglo, se
demora menos en ordenar 100 elementos que 500.

El tiempo de ejecucin de un algoritmo debe
medirse en funcin del tamao de los datos de
entrada que debe procesar.
Hugo Araya Carrasco
Tiempo de ejecucin de un algoritmos
Se define como el tiempo empleado por el
algoritmo A en procesar una entrada de tamao n y
producir una solucin al problema.


) (n T
A
Hugo Araya Carrasco
El ideal es encontrar una funcin matemtica
que describiera de manera exacta T
A
(n).
Sin embargo, en muchos casos, el clculo de
esta funcin no se puede realizar, ya que
depende de otro factor no considerado y que
es casi imposible de medir: la calidad de la
entrada.
Tiempo de ejecucin
Ejemplo: Consideremos el algoritmo utilizado para
determinar si un elemento se encuentra en un
vector de n posiciones.

// elem: es el elemento buscado
i=0;
while ((i<N) && (vec[i] != elem))
i++;


Hugo Araya Carrasco
Tiempo de ejecucin de un algoritmos
Anlisis puramente terico.

O Verificar la influencia que tienen los datos
especficos de la entrada (no solamente su
cantidad).
O Supongamos que fijamos N = 6 y que la evaluacin
de cada lnea del programa toma t microsegundos.
O Consideremos el vector siguiente:
Hugo Araya Carrasco
Tiempo de ejecucin
Si elem = 5, cuantos microsegundos consume

i = 0;
t ms.
((0<6) && (vec[0] != 5))
t ms.
i++ ;
----
Total 2 t ms.
Hugo Araya Carrasco
Tiempo de ejecucin de un algoritmos
Si elem = 9, cuantos microsegundos consume

i = 0;
t ms.
((0<6) && (vec[0] != 9))
t ms.
i++ ;
t ms.
((1<6) && (vec[1] != 9))
t ms.
i++ ;
t ms.
((2<6) && (vec[2] != 9))
t ms.
i++ ;
t ms.
((3<6) && (vec[3] != 9))
t ms.
i++ ;
t ms.
((4<6) && (vec[4] != 9))
t ms.
Total 10 t ms.
Hugo Araya Carrasco
Tiempo de ejecucin
Aunque se conozca el tamao de los datos de
entrada, es imposible para muchos problemas
determinar el tiempo de ejecucin para cada una de
las posibles entradas.
Por esta razn se debe trabajar con el tiempo
utilizado por el algoritmo en el peor de los casos ya
que es mucho ms fcil definir este peor caso.
Con este antecedente se redefine T
A
(n).
T
A
(n) = Tiempo que se demora el algoritmo A en
el peor de los casos, para encontrar una solucin
a un problema de tamao n.
Hugo Araya Carrasco
Tiempo de ejecucin de un algoritmos



Para el ejemplo anterior cual es el peor caso?

Hugo Araya Carrasco
Complejidad
La idea detrs del concepto de complejidad
es tratar de encontrar una funcin f(n), fcil
de calcular y conocida, que acote el
crecimiento de la funcin de tiempo, para
poder decir:
T
A
(n) crece aproximadamente como f
o
En ningn caso T
A
(n) se comportar peor
que f al aumentar el tamao del
problema.

Hugo Araya Carrasco
Complejidad
A modo de ejemplo se pueden mencionar
algunas funciones tpicas de complejidad de
algoritmos (dicho de otra forma que acotan
superiormente el comportamiento del
tiempo de ejecucin).
2
n
, n
3
, n
2
, nlog(n), n

Cul es la grfica de cada una de ellas?
Hugo Araya Carrasco
Complejidad
0
5
10
15
20
25
30
0 2 4 6 8
1
0
1
2
1
4
1
6
1
8
2
0
n
f
(
n
)
f(n) = 5
f(n) = log(n)
f(n) = n
f(n) = nlog(n)
Hugo Araya Carrasco
Complejidad
Hugo Araya Carrasco
f (n) = n^2
0
50
100
150
200
250
300
350
400
450
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
n
f
(
n
)
f (n) = n^2
f(n) = 2 ^ n
0
200000
400000
600000
800000
1000000
1200000
0 2 4 6 8
1
0
1
2
1
4
1
6
1
8
2
0
n
f
(
n
)
f(n) = 2 ^ n
Complejidad
Un problema se denomina Tratable si existe
un algoritmo de complejidad polinomial para
resolverlo. En caso contrario se denomina
Intratable.

Esta clasificacin es importante porque,
cuando el tamao del problema aumenta, los
algoritmos de complejidad polinomial dejan
de ser utilizables de manera gradual.

Hugo Araya Carrasco
Complejidad
Los algoritmos para resolver problemas
intratables, explotan de un momento a otro,
volvindose completamente incapaces para
llegar a una respuesta al problema
planteado.

El caso limite de los problemas Intratables
son los problemas Indecibles, son
problemas para los cuales no existen
algoritmos que los resuelvan.
Hugo Araya Carrasco

Complejida
d
20 50 100 200 500 1000
1000n
0.02
s.
0.05
s.
0.1
s.
0.2 s. 0.5 s. 1 s.
1000n*lo
g(n)
0.09
s.
0.3 s. 0.6
s.
1.5 s. 4.5 s. 10 s.
100n
2
0.04
s.
0.25
s.
1 s. 4 s. 25 s. 2 m.
10n
3
0.02
s.
1 s. 10 s. 1 m. 21 m. 2.7 h.
n
log(n)
0.4 s. 1.1 h. 220
das
125
Siglo
s
XXX

XXX

2
n/3
0.001
s.
0.1 s. 2.7
h.
3*10
4

Siglo
s
XXX

XXX

2
n
1 s. 35
Aos
3*10
4

Sigl
os
XXX XXX

XXX

3
n
58 m. 2*10
9

siglo
s
XXX

XXX

XXX

Hugo Araya Carrasco
Notacin Asinttica
O Operacin elemental: es aquella operacin cuyo
tiempo de ejecucin se puede acotar superiormente
por una constante que solamente depender de la
implementacin particular usada: de la maquina, del
lenguaje, del compilador, etc.

O Ejemplo de estas operaciones son: suma, resta,
multiplicacin, asignacin, acceso a arreglos, etc.
Aunque en rigor el tiempo de una multiplicacin no
es el mismo que el tiempo de la suma, pero difieren
en una constante multiplicativa.
Hugo Araya Carrasco
Notacin Asinttica
O La eficiencia de un algoritmo se mide mediante las
operaciones elementales, ms especficamente del
nmero de operaciones elementales que se deben
ejecutar.

O Anlisis del Peor Caso: se define como el mximo
costo (operaciones elementales) de aplicar el
algoritmo a un problema de tamao n.

O Este anlisis se suele aplicar para casos extremos
en los que interesa saber cuanto, como mximo, va a
costar la aplicacin del algoritmo.
Hugo Araya Carrasco
Notacin Asinttica
O Algunas reglas bsicas para realizar dicho
conteo:
O Operaciones bsicas (+, -, *, =, ): Una unidad de
tiempo, o alguna constante.
O Operaciones de entrada / salida: Otra unidad de
tiempo, o una constante diferente.
O Ciclos Para (for): Se pueden expresar como la
sumatoria, con los lmites del ciclo.
O Si y Case: Estudiar lo que puede ocurrir. Mejor
caso y peor caso segn la condicin.
O Llamadas a procedimientos: Una constante de la
llamada ms el tiempo del procedimiento.
Hugo Araya Carrasco
Notacin Asinttica
O La notacin asinttica nos permite realizar
simplificaciones sustanciales aun cuando estemos
interesados en medir algo ms tangible que el tiempo de
ejecucin, tal como es el nmero de veces que se ejecuta
una instruccin dentro del programa.

O Se denomina notacin asinttica porque trata acerca del
comportamiento de funciones en el lmite, esto quiere
decir, para valores suficientemente grandes de su
parmetro. Esto hace que los valores pequeos de las
entradas no sean interesantes.

O Dicho de otra manera, estamos interesados en las tasas
de crecimientos en lugar de los valores concretos.
Hugo Araya Carrasco
Notacin Asinttica
O La notacin (o grande) o cota superior es la
encargada de dar una cota para el peor caso y
determinar las acotaciones superiores lo ms
exactamente posible para valores crecientes de la
entrada.

O Por lo tanto se puede asegurar que conociendo la
cota superior, ningn tiempo empleado en resolver el
problema dado ser de un orden superior al de la
cota. Se conoce como el orden del peor caso.

O La notacin asinttica clasifica las funciones de
tiempo de los algoritmos para que puedan ser
comparadas.
Hugo Araya Carrasco
Notacin Asinttica
Hugo Araya Carrasco
Notacin Asinttica
Hugo Araya Carrasco
Notacin Asinttica
Hugo Araya Carrasco
Notacin Asinttica
Hugo Araya Carrasco
Que puede decir de las funciones.
Notacin Asinttica
Hugo Araya Carrasco
Notacin Asinttica
Hugo Araya Carrasco
Notacin Asinttica
Hugo Araya Carrasco
Notacin Asinttica
Hugo Araya Carrasco

Hugo Araya Carrasco

Você também pode gostar