El análisis de algoritmos es un campo de la informática que se dedica a comprender la complejidad de los algoritmos. Los algoritmos generalmente se definen como procesos que realizan una serie de operaciones hasta un final. Los algoritmos se pueden expresar de muchas formas, en diagramas de flujo, un lenguaje natural y lenguajes de programación de computadoras. Los algoritmos se utilizan en matemáticas, informática y lingüística, pero un uso más común es en las computadoras para hacer cálculos o procesar datos. El análisis de algoritmos se ocupa de algoritmos escritos en lenguajes de programación de computadoras, que se basan en formalismo matemático.
Un algoritmo es esencialmente un conjunto de instrucciones para que una computadora realice un cálculo de cierta manera. Por ejemplo, una computadora usaría un algoritmo para calcular el cheque de pago de un empleado. Para que la computadora realice los cálculos, necesita datos apropiados ingresados en el sistema, como el salario del empleado y la cantidad de horas trabajadas.
Más de un algoritmo puede funcionar para realizar la misma operación, pero algunos algoritmos usan más memoria y tardan más en realizarse que otros. Además, ¿cómo sabemos qué tan bien funcionan los algoritmos en general, dadas las diferencias entre las computadoras y las entradas de datos? Aquí es donde entra en juego el análisis de algoritmos.
Una forma de probar un algoritmo es ejecutar un programa de computadora y ver qué tan bien funciona. El problema con este enfoque es que solo nos dice qué tan bien funciona el algoritmo con una computadora y un conjunto de entradas en particular. El propósito del análisis de algoritmos es probar y luego sacar conclusiones sobre qué tan bien funciona un algoritmo en particular en general. Esto sería muy difícil y llevaría mucho tiempo hacerlo en computadoras individuales, por lo que los investigadores diseñan modelos de funcionamiento de computadoras para probar algoritmos.
En general, el análisis de algoritmos se ocupa más de averiguar cuánto tiempo tarda un programa en ejecutarse y cuánto espacio de almacenamiento de memoria necesita para ejecutar el programa. En particular, los científicos informáticos utilizan el análisis de algoritmos para determinar cómo los datos imputados en un programa afectan su tiempo total de ejecución, cuánto espacio de memoria necesita la computadora para los datos del programa, cuánto espacio ocupa el código del programa en la computadora, si un algoritmo produce correctamente cálculos, qué tan complejo es un programa y qué tan bien maneja los resultados inesperados.