Está en la página 1de 3

Universidad Nacional de Ingeniería

Ciencias de la Computación
Análisis Asintótico
Yuri Nuñez Medrano *
ynunezm@gmail.com

Resumen Ejm: Evaluar el tiempo de ejecución del algoritmo 1 y luego


el caso mejor, peor y promedio.
Se evaluará el tiempo de ejecucion (complejidad del algo-
rítmo) en los diferentes casos mejor, peor y promedio. Se Algorithm 1: INSERTION_SORT(A,n)
analizara el tipo de notación asíntotica ” La Gran O”. Input: Array A de n elementos de números
Output: Array A ordenado
1 for j = 2 to n do
1. Introducción 2 key = A[j]
El analisis del algoritmo lo aproximaremos a una función en 3 i=j−1
sus diferentes casos, que pudiera tener el algorímo median- 4 while i > 0 and A[i] > key do
te la aproximación a una función conocida, con el análisis 5 A[i + 1] = A[i]
asintótico. En una primera instancia con el limite superior 6 i=i−1
con la ”Gran O” 7 A[i + 1] = key

2. Analisis Asintótico Al evaluar la complejidad linea por línea encontraremos los


costos ci donde i = 1, 2, 3, ... y tj es para evaluar el caso
”Asintótico dicho de una curva, que se acerca de continuo peor, mejor e intermedio.
a una recta o a otra curva sin llegar a nunca encontrarla ” 1: c1 n
[DRA, 2001]. 2: c2 (n − 1)
3: c3 (n − 1)
Pn
2.1. Notación Asintótica 4: c4 j=2 tj
Pn
5: c5 j=2 (tj − 1)
Tiene como objeto simplificar el análisis de tiempo de eje- Pn
6: c6 j=2 (tj − 1)
cución mediante la eliminación de detalles que pueden verse 7: c7 (n − 1)
afectados por especificaciones en la implementación y el Hw.
Ejm. similud de redondeo El tiempo de ejecucion T (n) es la suma de cada tiempo del
1000001 = 1000000 algoritmo.
3n2 = n2
Capturar la escencia: como el tiempo de ejecución aumenta, T (n) = c1 n + c2 (n − 1) + c3 (n − 1) + c4 j=2 tj +
Pn
con el input en el limite. Pn Pn
c5 j=2 (tj − 1) + c6 j=2 (tj − 1) + c7 (n − 1)
Asitóticamente los algoritmos más eficientes son mejores pa- Reemplazando las sumatorias
ra todos los inputs. 2 2
T (n) = c1 n + c2 n − c2 + c3 n − c3 + c4 ( n2 + n2 − 1) + c5 ( n2 −
n n2 n
2 ) + c6 ( 2 − 2 ) + c7 n − c7
2.2. Caso Mejor, Peor y Promedio T (n) = −(c2 + c3 + c4 + c7 ) + n(c1 + c2 + c3 + c7 + c24 − c25 −
c6 2 c4 c5 c6
Cada caso tiene su complejidad con su tiempo de ejecución 2 )+n ( 2 + 2 + 2 )
La solución tiene la siguiente forma.
de un algoritmo.
−k0 + nk1 + n2 k2
* Escuela de Ciencias de la Computación, 27-08-15 Evaluando los diferentes casos y reemplazando:

1
2

Figura 1: gran O Figura 3: n2

En la figura 3 se ilustra que no importa que tan grande sea


elegido una ”c” existe un n suficientemente grade n2 > cn.
f (n) ≤ g(n)
f (n) = n2
f (n) 6≤ cg(n)
n2 6≤ O(n)
n2 > cn

Figura 2: 2n + 6 Regla Simple


Podemos definir una regla simple.
50nlogn es O(nlogn)
Caso mejor: Cuando los elementos ya estan ordenados
7n − 3 es O(n)
tj = 1 tiempo de ejecución = f (n), tiempo lineal.
8n2 lgn + 5n2 + n es O(n2 lgn)
5
Caso peor: Cuando los elementos estan ordenado de 50nlogn es O(n )
5
manera inversa tj = j tiempo de ejecución = f (n2 ), Aunque 50nlgn es O(n ), se espera que la aproximación
tiempo cuadratico. sea la menor posible.

Caso promedio: Cuando aproximadamente tj = j/2 Analisis Asintótico del tiempo de ejecución
tiempo de ejecución = f (n2 ), tiempo cuadratico.
Uso de la notación-O para expresar el número de ope-
raciones primitivas ejecutadas en función del tamaño
2.3. Notación ”Gran O” del input.
Asintóticamente el límite superior
Comparación el tiempo de ejecución asintótico.
f (n) = O(g(n)), Si existe c ctes y n0 , de tal manera que
f (n)≤cg(n) , ∀n≥n0 . • Un algorítmo ejecuta en un tiempo O(n) es mejor
f (n) y g(n) son funciones sobre numeros no negativos. que otro que ejecuta a un tiempo O(n2 ).
Es usada para el peor de los casos, en la figura 1.
Ejm: Para funciones f (n) y g(n) que tiene c constantes po- • Jerarquia de funciones: logn < n < n2 < n3 < 2n .
sitivos y n0 , de tal manera que f (n)≤cg(n) para n≥n0 , se
Advertencia tener cuidado con los factores de costantes
define la pregunta. ¿2n + 6 es O(n)?
muy grandes.
en la figura 2.
f (n) = O(g(n)) Un algoritmo ejecuta en un tiempo 1000000n es todavia
f (n) = cg(n) O(n) pero puede ser menos eficiente que una ejecución
si probamos con c = 4. en tiempo 2n2 , que es O(n2 ).
4n = 2n + 6
n0 = 62 Ejr: Evaluar el tiempo de ejecución del algoritmo 2 y luego
Ejm: Se define la pregunta ¿n2 es O(n)? el caso mejor, peor y promedio. Luego diseñar un nuevo
en la figura 3, observamos que n2 no es O(n) porque no hay algoritmo PROM_PREFIJO2(X,n), la que sera mas optimo
c y n≥n0 de tal manera que no cumple f (n)≤cg(n) para que el anterior, para que se evalue su tiempo de ejecución y
n≥n0 su caso mejor, peor y promedio.
3

Algorithm 2: PROM_PREFIJO(X,n)
Input: Array X de n elementos de números
Output: Array A de n elementos, de talmanera que A[i]
es el promedio de X[0]...X[i]
1 for i = 0 to n − 1 do
2 a=0
3 for j = 0 to i do
4 a = a + X[j]
5 A[i] = a/(i + 1)
6 return A

Referencias
[DRA, 2001] DRA, R. A. E. (2001). Diccionario de la Real
Academia Española. Espasa Calpe.

[H.Cormen et al., 2009] H.Cormen, T., Leiserson, C., and


Riverson, R. L. (2009). Algorithms. The MIT Press.