En informática (específicamente en la teoría de la complejidad computacional ), la complejidad del peor caso mide los recursos (por ejemplo, tiempo de ejecución, memoria ) que requiere un algoritmo dada una entrada de tamaño arbitrario (comúnmente denotada como n en notación asintótica ). Da un límite superior a los recursos requeridos por el algoritmo.
En el caso del tiempo de ejecución, la complejidad temporal del peor caso indica el tiempo de ejecución más largo realizado por un algoritmo dado cualquier entrada de tamaño n y, por lo tanto, garantiza que el algoritmo finalizará en el período de tiempo indicado. El orden de crecimiento (por ejemplo, lineal, logarítmico ) de la complejidad del peor caso se utiliza comúnmente para comparar la eficiencia de dos algoritmos.
La complejidad del peor caso de un algoritmo debe contrastarse con su complejidad del caso promedio , que es una medida promedio de la cantidad de recursos que el algoritmo utiliza en una entrada aleatoria.
Dado un modelo de cálculo y un algoritmo que se detiene en cada entrada , la asignación se denomina complejidad temporal de si, para cada cadena de entrada , se detiene después de exactamente pasos.
Dado que generalmente nos interesa la dependencia de la complejidad temporal en diferentes longitudes de entrada, abusando de la terminología, a veces se hace referencia a la complejidad temporal como el mapeo , definido por la complejidad máxima.
de entradas con longitud o tamaño .
Se pueden dar definiciones similares para la complejidad espacial , la complejidad de la aleatoriedad, etc.
Muy frecuentemente, la complejidad de un algoritmo se da en notación asintótica Big-O , que da su tasa de crecimiento en la forma con una cierta función de comparación de valor real y el significado:
Con bastante frecuencia, la redacción es:
o incluso solamente:
Considere la posibilidad de realizar una ordenación por inserción de números en una máquina de acceso aleatorio . El mejor caso para el algoritmo es cuando los números ya están ordenados, lo que requiere pasos para realizar la tarea. Sin embargo, la entrada en el peor caso para el algoritmo es cuando los números están ordenados de forma inversa y se requieren pasos para ordenarlos; por lo tanto, la complejidad temporal en el peor caso de la ordenación por inserción es de .