Notación Big-O: Complejidad de Tiempo y Eficiencia de Algoritmos
Este artículo es una explicación de conceptos sobre la notación Big-O, incluyendo preguntas de examen y referencias.
De un Vistazo
La notación Big-O describe cómo crecen el tiempo de ejecución o el consumo de memoria de un algoritmo en relación con el tamaño de la entrada: es una medida de eficiencia.
Descripción Técnica Concisa
La notación Big-O se utiliza para analizar la complejidad asintótica de un algoritmo, abstrayéndose de tiempos de ejecución concretos y enfocándose en cómo se comporta con entradas cada vez mayores. Se expresa en el peor caso (“Worst Case”) el número de operaciones o accesos a memoria que requiere un algoritmo. Ejemplos: O(1) = constante, O(n) = lineal, O(n²) = cuadrático, O(log n) = logarítmico. De este modo se pueden comparar algoritmos independientemente de la plataforma de hardware.
Puntos Clave para el Examen
- Big-O describe el comportamiento del crecimiento de tiempo/memoria
- Se considera por defecto el “Worst Case”
- Notaciones típicas: O(1), O(n), O(log n), O(n²), O(n log n)
- Logarítmico, por ejemplo, en búsqueda binaria (relevante para certificaciones)
- Los algoritmos cuadráticos son ineficientes con datos grandes
- Los algoritmos eficientes ahorran recursos, lo que es económicamente relevante
- El análisis Big-O debe documentarse en algoritmos complejos
Componentes Principales
- Constante: O(1)
- Lineal: O(n)
- Logarítmico: O(log n)
- Lineal-logarítmico: O(n log n)
- Cuadrático: O(n²)
- Cúbico: O(n³)
- Exponencial: O(2ⁿ)
- Análisis del Worst-Case
- Best-Case, Average-Case
- Relevancia para Escalabilidad
Ejemplo Práctico
// Comparación: búsqueda lineal vs. búsqueda binaria
Búsqueda lineal: O(n)
Búsqueda binaria: O(log n), solo con listas ordenadas
Explicación: La búsqueda lineal recorre la lista completa; la búsqueda binaria divide el campo de búsqueda por la mitad en cada paso, siendo mucho más eficiente con grandes volúmenes de datos.
Ventajas e Inconvenientes
Ventajas
- Comparabilidad de algoritmos independiente de la implementación
- Identificación de posibles cuellos de botella
- Mejores decisiones en fases de diseño
Inconvenientes
- No proporciona información sobre tiempos reales en hardware específico
- Solo considera el Worst-Case sin promedios
- Es teórico, no siempre transferible directamente a condiciones reales
Preguntas Típicas de Examen (con Respuesta Breve)
- ¿Qué describe la notación Big-O? La complejidad de un algoritmo en términos de tiempo o memoria respecto al crecimiento de la entrada.
- ¿Qué significa O(1)? El tiempo de ejecución es constante, independiente del tamaño de la entrada.
- ¿Cuál es más eficiente: O(n) u O(log n)? O(log n), porque es significativamente más rápido a medida que aumenta el volumen de datos.
- ¿Qué representa “n” en O(n)? El número de elementos de entrada.
- ¿Qué algoritmo es típicamente O(n log n)? Merge Sort o Quick Sort en promedio.
- ¿Por qué O(n²) es problemático? El tiempo de ejecución crece exponencialmente con grandes volúmenes de datos.
- ¿Un algoritmo puede ser simultáneamente O(n) y O(n²)? No, siempre se indica el componente dominante.
- ¿Cómo documentar Big-O? Mediante comentarios en el código, diagramas o análisis formal.
Referencias Principales
- https://www.bigocheatsheet.com/
- https://visualgo.net/en
- https://www.geeksforgeeks.org/analysis-of-algorithms-set-1-asymptotic-analysis/
- https://cs50.harvard.edu/
- https://www.youtube.com/results?search_query=big+o+notation



