Академический Документы
Профессиональный Документы
Культура Документы
ALGORITMOS
Karim Guevara Puente de la Vega
Agenda
Evaluando el rendimiento
Conteo de sentencias
Notación O-Grande
Caso peor, mejor, medio
Tipos de algoritmos
Reglas de notación asintótica
Complejidad de algoritmos iterativos
Complejidad de algoritmos recursivos
Introducción
Cuando hay necesidad de elegir entre varios algoritmos,
¿cómo evaluar y/o comparar las alternativas?...
Con frecuencia interesa el buen rendimiento
• Tiempo esperado y el uso de la memoria
Algoritmos exponenciales
Aquellos que son proporcionales a kn
No son factibles salvo un tamaño de entrada n exageradamente
pequeño.
Reglas de notación asintótica
Sean T1(n) y T2(n) dos funciones que expresan los tiempos
de ejecución de dos fragmentos de un programa, y se acotan
de forma que se tiene:
T1(n) = O(f1(n)) y T2(n) = O(f2(n))
Regla de la suma
T1(n) + T2(n) = O(max(f1(n),f2(n)))
Secuencia de instrucciones
T. ejecución = t. ejecución individuales
P.e.:
Sean S1 y S2, una secuencia de dos instrucciones:
T(S1 ; S2) = T(S1) + T(S2)
Leer n;
i1;
Mientras i<=n Hacer
Para ji Hasta n
A[i,j] j * 2;
FinPara
i i + 1;
FinMientras
MatrizProd(n,A,B,C); O(n3)
FinProcedimiento
COMPLEJIDAD DE ALGORITMOS
RECURSIVOS
Analizando algoritmos recursivos
int factorial (int n) {
if (n < 1 )
return 1;
else
return (n * factorial(n-1));
}
1 si n=0
T(n) =
T(n-1) +1 en otro caso
Resolviendo la recurrencia
1 si n=0
T(n) =
T(n-1) +1 en otro caso
1 si n=0
T(n) =
2T(n-1) +1 en otro caso
Resolviendo la recurrencia
1 si n=0
T(n) =
1 + 2T(n-1) en otro caso
Repetir la substitución
T(n) = 1 + 2T(n-1)
= 1 + [ 2 + 2T(n-2) ]
= 1 + [ 2 + ( 4 + 8T(n-3))]
...
Generalizar el patrón :
= 2i-1 + 2i T(n-i)