Professional Documents
Culture Documents
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.
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
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
Anlisis de Algoritmos
del
cdigo
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
El ideal es encontrar una funcin matemtica que describiera de manera exacta TA(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.
Hugo Araya Carrasco
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++;
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:
Tiempo de ejecucin
Si elem = 5, cuantos microsegundos consume
i = 0;
((0<6) && (vec[0] != 5))
t ms. t ms.
i++ ;
---Total 2 t ms.
i++ ;
((2<6) && (vec[2] != 9)) i++ ; ((3<6) && (vec[3] != 9)) i++ ; ((4<6) && (vec[4] != 9))
t ms.
t ms. t ms. t ms. t ms. 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.
TA(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
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: TA(n) crece aproximadamente como f o En ningn caso TA(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).
Complejidad
30 25 20 f(n) = 5 15 10 5 0 f(n) = log(n) f(n) = n f(n) = nlog(n)
f(n)
10
12
14
16
18
20
Complejidad
f(n) = n^2
f(n)
f(n)
10
12
14
16
18
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 n f(n) = n^2
n f(n) = 2 ^ n
20
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.
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
0.02 s.
0.09 s. 0.04 s. 0.02 s.
50
0.05 s.
0.3 s. 0.25 s. 1 s.
100
0.1 s.
0.6 s. 1 s. 10 s. 220 das 2.7 h.
200
0.2 s.
1.5 s. 4 s. 1 m. 125 Siglo s 3*104 Siglo s
500
0.5 s.
4.5 s. 25 s. 21 m. XXX
1000
1 s.
10 s. 2 m. 2.7 h. XXX
1000n
1000n*lo g(n) 100n2 10n3 nlog(n)
0.4 s. 1.1 h.
2n/3
0.001 0.1 s. s.
XXX
XXX
2n
1 s.
35 Aos
3*10
4
XXX
XXX
XXX
Sigl os
3n
XXX
XXX
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.
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
en los que interesa saber cuanto, como mximo, va a costar la aplicacin del algoritmo.
Notacin Asinttica
O Algunas reglas bsicas para realizar dicho
conteo:
O Operaciones bsicas (+, -, *, =, ): Una unidad de O O O O
tiempo, o alguna constante. Operaciones de entrada / salida: Otra unidad de tiempo, o una constante diferente. Ciclos Para (for): Se pueden expresar como la sumatoria, con los lmites del ciclo. Si y Case: Estudiar lo que puede ocurrir. Mejor caso y peor caso segn la condicin. Llamadas a procedimientos: Una constante de la llamada ms el tiempo del procedimiento.
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.
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
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.
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
Notacin Asinttica
Notacin Asinttica
Notacin Asinttica
Notacin Asinttica
Notacin Asinttica
Notacin Asinttica
Notacin Asinttica
Notacin Asinttica