1.1.4 Orden de complejidad 𝑂() de un algoritmo
La complejidad de un algoritmo es un concepto clave para evaluar su eficiencia, ya que determina el tiempo que se requiere para encontrar una solución a un problema específico. Un algoritmo óptimo no solo debe ser fácil de comprender y utilizar eficientemente los recursos de la computadora, sino que también debe ofrecer una solución en un tiempo razonablemente corto o en un tiempo polinomial. Sin embargo, no todos los algoritmos cumplen con estos criterios, no necesariamente por un mal diseño, sino porque el problema que abordan puede ser inherentemente complejo.
Para medir la eficiencia de un algoritmo, se consideran dos parámetros principales:
- Espacio: Se refiere a la cantidad de recursos o memoria que el algoritmo utiliza.
- Tiempo: Se refiere al periodo necesario para ejecutar el algoritmo.
Ambos parámetros son esenciales para comparar diferentes algoritmos que resuelven el mismo problema, lo que permite seleccionar el más adecuado.
En condiciones ideales, la complejidad de un algoritmo se representa mediante una función que define un polinomio de comportamiento. Estos polinomios establecen cotas o límites máximos y mínimos en relación con el tiempo y el volumen de datos de entrada, determinando el tiempo que el algoritmo debe emplear para generar una solución.
El término Ómicron o Big O se utiliza para describir las cotas superiores de diversos tipos de algoritmos, especificando el tiempo máximo que puede requerir un algoritmo para resolver un problema. Esto se conoce como el peor caso del algoritmo. Como Big O establece una cota superior, no hay ningún escenario de ejecución del algoritmo que supere el tiempo máximo definido por esta notación.
Existen varias cotas superiores e inferiores que delimitan los comportamientos de distintos algoritmos. Para identificar la cota correspondiente a un algoritmo, se lleva a cabo un análisis de complejidad, el cual también permite clasificar los algoritmos según su tiempo de ejecución.