Sunteți pe pagina 1din 21

UNIVERSIDAD NACIONAL DE COLOMBIA

SEDE MEDELLN

FACULTAD

Escuela de Sistemas

DE

MINAS

Estructuras de Datos

Clase Nro. 9 Introduccin al Anlisis de Algoritmos

Profesores:

Francisco Javier Moreno Arboleda PhD(c) Jovani Universidad Nacional de Colombia Alberto Jimnez Builes, PhD.

Contenido

Anlisis de Algoritmos.

Universidad Nacional de Colombia

Factores
Consumo de memoria. Tiempo de ejecucin. Independiente de la mquina. Independiente del lenguaje de programacin.

Universidad Nacional de Colombia

Conceptos Bsicos
Contador de frecuencias: Expresin algebraica que indica el nmero de veces que se ejecutan las instrucciones de un algoritmo

Universidad Nacional de Colombia

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

Universidad Nacional de Colombia

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

Conceptos Bsicos (Cont.)


Orden de Magnitud: Indica como crece el tiempo de ejecucin de un algoritmo cuando crece el tamao del problema resuelto por el algoritmo, es decir, se mide en base a un tamao de entrada el cual puede ser el nmero de elementos a imprimir, a sumar a ordenar etc. Se puede obtener a partir del contador de frecuencias as:

Universidad Nacional de Colombia

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

Ejemplo: Suma de los n Nmeros Enteros


Algoritmo a: Lea n s=1 suma=0 While s<=n suma=suma + s s=s+1 End While Escriba suma Algoritmo b: Lea n suma=n*(n+1)/2 Escriba suma

El algoritmo a es O(n) mientras que el algoritmo b es O(1)


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

1 1 1 n+1 n n n*Log2n + n n*Log2n n*Log2n n*Log2n n n n n 1 ------------------------Contador de frecuencias: 8n + 4n*Log2n + 5 O(n*Log2n)


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

contador 1 n+1 s+n s s n ----------------3n + 3s + 2

Fin
Universidad Nacional de Colombia

S-ar putea să vă placă și