You are on page 1of 37

Estructura de Datos

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.
Hugo Araya Carrasco

Cul de los dos es mejor?.

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

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

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 generado). O La estructura del algoritmo.

del

cdigo

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


TA ( n )
Se define como el tiempo empleado por el algoritmo A en procesar una entrada de tamao n y producir una solucin al problema.

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++;

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;
((0<6) && (vec[0] != 5))

t ms. t ms.

i++ ;

---Total 2 t ms.

Hugo Araya Carrasco

Tiempo de ejecucin de un algoritmos


Si elem = 9, cuantos microsegundos consume
i = 0; ((0<6) && (vec[0] != 9)) i++ ; ((1<6) && (vec[1] != 9)) t ms. t ms. t ms. 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.

Con este antecedente se redefine TA(n).

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

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: 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).

2n, n3, n2, nlog(n), n


Cul es la grfica de cada una de ellas?

Hugo Araya Carrasco

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

Hugo Araya Carrasco

20

Complejidad
f(n) = n^2

f(n) = 2 ^ n 1200000 1000000 800000

450 400 350 300

f(n)

f(n)

250 200 150 100 50

600000 400000 200000 0

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

Hugo Araya Carrasco

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.

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
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

58 m. 2*109 XXX Hugo Araya Carrasco siglo

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.

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 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.

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

Que puede decir de las funciones.


Hugo Araya Carrasco

Notacin Asinttica

Hugo Araya Carrasco

Notacin Asinttica

Hugo Araya Carrasco

Notacin Asinttica

Hugo Araya Carrasco

Notacin Asinttica

Hugo Araya Carrasco

Hugo Araya Carrasco

You might also like