Documente Academic
Documente Profesional
Documente Cultură
SEDE MEDELLN
FACULTAD
Escuela de Sistemas
DE
MINAS
Estructuras de Datos
Profesores:
Francisco Javier Moreno Arboleda PhD(c) Jovani Universidad Nacional de Colombia Alberto Jimnez Builes, PhD.
Contenido
Anlisis de Algoritmos.
Factores
Consumo de memoria. Tiempo de ejecucin. Independiente de la mquina. Independiente del lenguaje de programacin.
Conceptos Bsicos
Contador de frecuencias: Expresin algebraica que indica el nmero de veces que se ejecutan las instrucciones de un algoritmo
Ejemplos: Algoritmo 1
Lea a, b, c x=a+b y=a+c z=b*c w=x/y-z Escriba a,b,c,w Contador de frecuencias
Universidad Nacional de Colombia
1 1 1 1 1 1 ----------------6
Algoritmo 2
Lea n s=0 i=1 While i<=n s=s+1 i=i+1 End While Escriba n,s
-------------
1 1 1 n+1 n n n 1
Contador de frecuencias
4n + 5
Algoritmo 3
1 1 1 n+1 n n (n*m)+n n*m n*m n*m n n n 1 ----------------Contador de frecuencias: 4(n*m) + 7n + 5
Universidad Nacional de Colombia
Lea n,m s=0 i=1 While i<=n t=0 j=1 While j<=m t=t+1 j=j+1 End While s=s+t i=i+1 End While Escriba n,m,s
Algoritmo 4
Lea n s=0 i=1 While i<=n t=0 j=1 While j<= n t=t+1 j=j+1 End While s=s+t i=i+1 End While Escriba n,s 1 1 1 n+1 n n n2+n n2 n2 n2 n n n 1 ----------------Contador de frecuencias: 4n2 + 7n + 5
Universidad Nacional de Colombia
Algoritmo 5
1 1 1 n+1 n n n 1 1 1 m+1 m m m 1 ----------------Contador de frecuencias: 4n + 4m + 9
Universidad Nacional de Colombia
Lea n,m s=0 i=1 While i<=n s=s+1 i=i+1 End While Escriba n,s s=0 i=1 While i<=m t=t+1 i=i+1 End While Escriba n,s
Se eliminan del contador de frecuencias los coeficientes, constantes y trminos negativos De cada conjunto de trminos dependientes (de una misma variable) se selecciona el trmino dominante (mayor) El orden de magnitud ser la suma de los trminos seleccionados (normalmente es uno solo)
Universidad Nacional de Colombia
Para los algoritmos anteriores se tienen los siguientes rdenes de magnitud: Algoritmo Orden 1 O(1) 2 O(n) 3 O(nxm) 4 O(n2) 5 O(n+m)
Universidad Nacional de Colombia
rdenes de magnitud ms frecuentes ordenados en forma ascendente desde el ms eficiente: O(1) O(log2n) O(n) O(nlog2n) n2 n3 2n Constante Logartmico Lineal Semilogartmico Cuadrtico Cbico Exponencial
Universidad Nacional de Colombia
Ms Ejemplos
1 1 1 Log2n + 1 Log2n Log2n Log2n 1 ---------------Contador de frecuencias= 4 Log2n + 5 O(Log2n)
Universidad Nacional de Colombia
Lea n s=0 i=n While i>1 s=s+1 i=i/2 End While Escriba n,s
Lea n s=0 For i=1 to n t=0 For j=1 to i t=t+1 End For s=s+t End For Escriba n,s
1 1 n+1 n n*(n+1)/2 + n n*(n+1)/2 n*(n+1)/2 n n 1 --------------------------Contador de frecuencias: 3n*(n+1)/2 + 5n + 4 = (3n2 + 3n)/2 + 5n + 4 O(n2)
Universidad Nacional de Colombia
Lea n s=0 i=1 while i<= n t=0 j=n while j>1 t=t+1 j=j/2 End while Escriba t s=s+t i=i+1 End while Escriba n,s
1 1 n+1 n n*(n+1)/2 + n z+ n*(n+1)/2 z z n*(n+1)/2 n --------------------------Contador de frecuencias: 3 + 4n + (3/2)n*(n+1) + 3z Donde z = w(w+1)/2, desarrollando se obtiene:
w=1
Universidad Nacional de Colombia
Lea n s=0 For i=1 to n t=0 For j=1 to i For k=1 to j s=s+1 End For End For End For
n
w(w+1)/2 = w2 + w
w=1 w=1 w=1
Y como:
n w2 = n(n+1)(2n+1)/6 w=1
n w = n(n+1)/2 w=1
Al simplificar se obtiene: z=(n3 + 3n2 + 2n) /6 Por lo tanto el contador de frecuencias es un polinomio de grado 3, entonces el algoritmo es O(n3)
Universidad Nacional de Colombia
void ejemplo(int *T, int n) { int k=0; for(int i=0; i<n; i++) { for(int j=0; j<T[i]; j++) { k=k+T[j]; } } } Contador de frecuencias: Orden: O(n+s) O(Max(n,s)) Qu es s?
Universidad Nacional de Colombia
Fin
Universidad Nacional de Colombia