Análisis de algoritmos y complejidad computacional
1.
2. • El análisis de algoritmos es una parte
importante de la Teoría de complejidad
computacional, que provee estimaciones
teóricas para los recursos que necesita
cualquier algoritmo que resuelva un
problema computacional dado.
2
3. Un algoritmo es una secuencia de pasos lógica para
encontrar la solución de un problema.
Todo algoritmo debe contar con las siguientes
características:
1. Preciso: cada paso del algoritmo tiene una relación
con el anterior y el siguiente.
2. Definido: ejecutar más de una vez con los mismos
datos y el resultado es el mismo.
3. Finito: el algoritmo tiene una serie de pasos definidos
o que tiene un fin.
3
4. • La complejidad algorítmica representa la
cantidad de recursos (temporales) que
necesita un algoritmo para resolver un
problema y por tanto permite determinar la
eficiencia de dicho algoritmo.
• Los criterios que se emplean para evaluar la
complejidad algorítmica no proporcionan
medidas absolutas sino medidas relativas al
tamaño del problema.
4
5. 1. Determinar qué operaciones se emplean y su
costo relativo.
2. Determinar conjuntos de datos y todos los
patrones posibles de comportamiento.
3. Análisis a priori: determina una función (de
ciertos parámetros) que acote el tiempo de
cómputo del algoritmo.
4. Análisis a posteriori: estadísticas reales sobre
tiempo y memoria.
5
6. El tiempo de ejecución de un algoritmo, se refiere a
la suma de los tiempos en los que el programa
tarda en ejecutar una a una, todas sus
instrucciones.
Tomando en cuenta que cada instrucción requiere
una unidad de tiempo, dicho tiempo se puede
calcular en función del número de datos.
6
7. • Se refiere a la memoria que utiliza un
programa para su ejecución; es decir, el
espacio de memoria que ocupan todas las
variables propias del programa.
• Dicha memoria se divide en Memoria
estática y Memoria dinámica.
7
8. • Un algoritmo es eficiente cuando logra llegar a
sus objetivos planteados utilizando la menor
cantidad de recursos posibles, es decir,
minimizando el uso memoria, de pasos y de
esfuerzo humano.
• Espacio: medida de la cantidad de memoria
requerida por un programa.
• Tiempo: la cantidad de tiempo de ejecución del
programa
8