Beruflich Dokumente
Kultur Dokumente
Análisis de Algoritmos
Cesar Liza Avila
website : www.cesarliza.com
e-mail : creadores@hotmail.com
a) Cantidad de memoria
b) Tiempo de cómputo requerido
Tiempo de ejecución
Se determina por el número de operaciones elementales.
Note que los tiempos son valores que se pueden obtener una vez conocida la
máquina en la que se ejecutará.
El tiempo total de cálculo depende del tamaño de la entrada n, sea cual fuera
la máquina en la que correrá. Así que podríamos decir que este algoritmo
tiene tiempo de ejecución que depende de n.
La Notación “O Grande”
Para expresar la cota superior asintótica de una función, se usa la
notación “O Grande”. Matemáticamente:
La función f(x) puede ser acotada por Θ ( g(x) ), tanto inferior como
superiormente, cuando usamos constantes diferentes.
• Sentencias Simples
• Condicionales
• Bucles
• Llamadas a función
• Secuencias de instrucciones
La complejidad que debe sumarse con la peor de las ramas ya sea las
instrucciones a ejecutar de ser verdadera o falsa la condición.
c) Bucles
Si el bucle tiene un contador de tamaño conocido entonces se multiplica
esa cantidad de veces por la sentencia de peor complejidad.
e) Secuencias de instrucciones
La complejidad de una secuencia de instrucciones es la suma de sus
complejidades individuales, debiendo aplicar todo lo anterior.
Ejemplo
Un programa emplea 100n unidades de tiempo para ser
ejecutado, otro programa emplea 2n2.
funcion( int n)
{
int i, j, k, x;
x=0;
para i=1 hasta n-1 hacer
para j=i+1 hasta n hacer
para k=1 hasta j hacer
x=x+1
}
n-1
= (n-1) n (n+1) / 2 - 1/2 ∑ (i2+i)
i=1
= (n-1) n (n+1) / 2 - 1/2. (n-1)(n)(2n-1)/6 – 1/2.(n-1)n/2
= n(n2-1)/3
ε (n3)
César Liza Avila www.cesarliza.com