CalcOpenly
Español

Calculadora de complejidad temporal Big O

Compara operaciones y tiempos de ejecución de O(1), O(log n), O(n), O(n log n), O(n²), O(n³), O(2ⁿ) y O(n!) para tu tamaño de entrada en un gráfico logarítmico.

Redactado con herramientas de redacción con IAActualizado Ejemplos verificados: 6

= 1,000,000,000
Un núcleo de CPU moderno realiza, de forma muy aproximada, 10⁹ operaciones simples por segundo.
Probar
Tiempo de ejecución
9,966 µs
Tiempo de ejecución: 9,966 µs
Tiempo de ejecución en segundos
0,000009966s
Operaciones
9 965,78
Log₁₀ del número de operaciones
3,9985
Big O omite factores constantes y términos de menor orden, por lo que los tiempos reales pueden diferir en un múltiplo constante.

Con n = 1 000, el modelo de crecimiento O(n log n) da unas 9 966 operaciones, que tardan 9,966 µs a 1 000 000 000 operaciones por segundo. Las curvas se recortan en el límite superior del gráfico; eso, por sí solo, no identifica una clase de complejidad.

Crecimiento en escala logarítmica (se omiten los recuentos cero)

02,557,5102004006008001 000nlog₁₀ de las operacionesUn segundo de trabajo
O(1)O(log n)O(n)O(n log n)O(n²)O(n³)O(2ⁿ)O(n!)
Todas las clases con n = 1 000 Filas: 8
ClaseOperacioneslog₁₀Tiempo
O(1)101 ns
O(log n)9,96580,9999,966 ns
O(n)1 00031 µs
O(n log n)9 965,783,9999,966 µs
O(n²)1 000 00061 ms
O(n³)1 000 000 00091 s
O(2ⁿ)1,07151 × 10³⁰¹301,033,395 × 10²⁸⁴ años
O(n!)4,02387 × 10²⁵⁶⁷2 567,6051,275 × 10²⁵⁵¹ años
Cómo se calcula S
  1. Contar las operaciones

    f(n)=nlog⁡2n=9,965.784(n=1000)f(n) = n \log_2 n = 9{,}965.784\quad (n = 1000)

    Los logaritmos son de base 2 (reducción a la mitad o división binaria); otra base solo cambia el número por un factor constante.

  2. Dividir entre la velocidad de la máquina

    t=9,965.7841,000,000,000 s−1=0.000009966 st = \frac{9{,}965.784}{1{,}000{,}000{,}000\ \text{s}^{-1}} = 0.000009966\ \text{s}
  3. Expresar en unidades habituales

    9,966 µs

Acerca de Calculadora de complejidad temporal Big O

La notación Big O describe cómo crece el trabajo de un algoritmo con el tamaño de entrada n, sin factores constantes. La calculadora evalúa cada función de crecimiento f(n), es decir, 1, log2 n, n, n log2 n, n², n³, 2ⁿ y n!, para tu valor de n. Después divide entre las operaciones simples que realiza la máquina por segundo para estimar el tiempo de ejecución.

Ayuda a valorar si un método terminará a tiempo antes de programarlo. Con los valores iniciales, n = 1000 y 10^9 operaciones por segundo, una ordenación O(n log n) realiza unas 9966 operaciones y tarda unos 10 µs; O(n²) tarda 1 ms. En cambio, O(2ⁿ) con solo n = 100 necesitaría 4,0 × 10^13 años.

En la fórmula, r son las operaciones por segundo. Interpreta los tiempos como órdenes de magnitud: el código real añade factores constantes, efectos de caché y términos de menor orden que la notación Big O omite.

Comparar modelos de crecimiento para un tamaño de entrada

La calculadora evalúa ocho funciones de crecimiento para un tamaño n y divide cada cuenta entre una tasa de operaciones por segundo. Permite comparar cómo aumenta el trabajo de los modelos y explorar un presupuesto de tiempo aproximado. Selecciona una función que corresponda al análisis del algoritmo antes de interpretar su duración.

El ejemplo inicial utiliza n = 1000, mil millones de operaciones por segundo y el modelo n log₂ n. Se obtienen aproximadamente 9965,784285 operaciones, equivalentes a 9,966 microsegundos. Al seleccionar n² con el mismo tamaño y tasa, aparecen un millón de operaciones y un milisegundo.

Estos tiempos pertenecen al modelo introducido. El formulario no inspecciona código, mide un procesador ni deduce automáticamente la complejidad de una función. Tampoco determina cuántas instrucciones de máquina corresponden a una operación conceptual. Define primero qué representa esa operación para que la comparación tenga un significado coherente.

Separar una cota asintótica de una cuenta exacta

La definición de notación O grande del NIST expresa una cota superior asintótica mediante una constante multiplicativa fija para entradas suficientemente grandes. No es una igualdad que proporcione el número exacto de operaciones para todos los tamaños de entrada.

Por ejemplo, n² y 3n² + 100n tienen una cota O(n²). Esta página evalúa la función representativa n², sin añadir el coeficiente tres ni el término de menor orden. Para n = 1000, la segunda expresión da 3,1 millones, mientras que el modelo n² mostrado da un millón.

Dos implementaciones pueden pertenecer a la misma clase de complejidad y realizar distinto trabajo por iteración. También pueden asignar diferente memoria o responder de otra manera a la distribución de los datos. Una mejor cota asintótica no implica necesariamente menor tiempo para todas las entradas pequeñas. La medición real y el análisis de crecimiento aportan información complementaria.

Distingue asimismo entre peor caso, caso medio y mejor caso. Elegir una curva no determina a cuál de esos análisis corresponde. Si un algoritmo tiene cotas diferentes según sus entradas, compáralas como escenarios separados y registra qué representa cada una. El selector cambia la función matemática, no la interpretación del caso.

Elegir n y una tasa de trabajo útil

El tamaño debe ser un entero de 1 a 1000000000. Decide qué cuenta n: elementos de una lista, vértices, candidatos u otra cantidad. Una expresión con vértices y aristas no puede reducirse en general a un único n sin una hipótesis adicional que relacione ambas variables.

La tasa debe ser positiva. El valor inicial de 10^9 operaciones por segundo es una hipótesis editable para comparar funciones. No afirma que una máquina pueda completar esa cantidad de consultas de base de datos, asignaciones, comparaciones de cadenas o peticiones de red cada segundo.

Mantén una unidad de trabajo consistente. Si mediste un millón de operaciones relevantes en dos segundos, una tasa inicial sería 500000 operaciones por segundo. Esa tasa puede cambiar para entradas mayores si limitan la memoria, la contención o la entrada/salida. Introducir una tasa medida no elimina esas dependencias.

Cambiar solo la tasa modifica inversamente todos los tiempos. Multiplicarla por diez divide cada duración entre diez y conserva las cuentas de operaciones. Así puedes comparar por separado una hipótesis de rendimiento y un cambio en el modelo de crecimiento, sin atribuir al algoritmo una mejora que procede únicamente de la tasa supuesta.

Interpretar las ocho funciones

El modelo constante vale uno. El logarítmico utiliza log₂ n y el lineal, n. El modelo combinado es n log₂ n. Después aparecen n², n³, la función exponencial 2^n y el factorial n!. Las funciones describen tendencias diferentes incluso cuando coinciden para algunos valores pequeños.

El resultado logarítmico no tiene por qué ser entero. Para n = 1000, log₂ n es aproximadamente 9,965784. Es el valor de la función continua, no una afirmación de que una búsqueda binaria real haga una fracción de comparación. Una cuenta exacta requiere reglas de redondeo y terminación del algoritmo concreto.

Para n = 1, log₂ n y n log₂ n son cero. Por eso esas selecciones muestran cero operaciones y tiempo de modelo. Un programa real conserva costes de preparación y retorno que estas funciones simplificadas no incluyen. Los factoriales se calculan directamente hasta n = 2000; por encima se utiliza una aproximación mediante log-gamma.

Leer el gráfico junto con la tabla

El eje vertical representa log₁₀ de la cuenta de operaciones. Pasar de seis a nueve significa multiplicar de un millón a mil millones, un factor de mil. La referencia horizontal de un segundo corresponde a la tasa seleccionada. Las curvas se recortan en el límite superior del gráfico y los ceros se omiten porque su logaritmo no está definido.

La tabla evalúa las ocho funciones para el n elegido aunque una curva ya quede fuera de la zona visible. Las cuentas se redondean a seis cifras significativas y los logaritmos a tres posiciones decimales. El CSV contiene esos valores de tabla, incluido el redondeo ya aplicado, no una expansión exacta completa de cantidades enormes.

EscenarioOperaciones del modeloTiempo del modelo
Predeterminado9965,789,966 µs
Cuadrático con mil elementos1,00000E+61 ms
Exponencial con cien elementos1,26765E+304,017 × 10¹³ años
Factorial de veinte2,43290E+1877,1 años
Logaritmo de uno00 s

Todas las filas utilizan 10^9 operaciones por segundo. Los modelos exponencial y factorial emplean n = 100 y n = 20; el último, n = 1. Los dos primeros usan n = 1000. Compara estas hipótesis y después mide el programa. La calculadora de ancho de banda modela otra restricción si domina la transferencia. El conversor de bases cambia la escritura de números, sin cambiar el crecimiento del algoritmo.

Ejemplos resueltos

n² con n = 1000

Tamaño de entrada n
1000
Operaciones por segundo
1e9
Tu algoritmo
O(n²)
Operaciones
1 000 000
Tiempo de ejecución en segundos
0,001 s
Tiempo de ejecución
1 ms

Fuente de comprobación: Cálculo independiente

n log n con n = 1000

Tamaño de entrada n
1000
Operaciones por segundo
1e9
Tu algoritmo
O(n log n)
Operaciones
9 965,78
Tiempo de ejecución en segundos
0,000009966 s

Fuente de comprobación: Cálculo independiente

2ⁿ con n = 100

Tamaño de entrada n
100
Operaciones por segundo
1e9
Tu algoritmo
O(2ⁿ)
Operaciones
1,26765 × 10³⁰
Log₁₀ del número de operaciones
30,1030
Tiempo de ejecución
4,017 × 10¹³ años

Fuente de comprobación: Cálculo independiente

20! operaciones

Tamaño de entrada n
20
Operaciones por segundo
1e9
Tu algoritmo
O(n!)
Operaciones
2,4329 × 10¹⁸
Tiempo de ejecución en segundos
2 433 000 000 s

Fuente de comprobación: Cálculo independiente

Preguntas

¿Qué diferencia hay entre O(n log n) y O(n²)?

Con n = 1000, n log2 n es aproximadamente 9966, mientras que n² es 1 000 000, unas 100 veces más. Con n = 1 millón, la diferencia es de unas 50 000 veces (2 × 10^7 frente a 10^12). Por eso la ordenación por mezcla y la ordenación por montículos, ambas O(n log n), superan a la ordenación por inserción y la de burbuja, O(n²) en el peor caso, salvo con entradas pequeñas.

¿Qué significa O(log n)?

O(log n) significa que el trabajo crece con el logaritmo del tamaño de entrada, normalmente porque cada paso reduce a la mitad lo que queda, como en la búsqueda binaria. Duplicar n añade solo un paso: una lista ordenada de 1000 elementos necesita unas 10 comparaciones (log2 1000 ≈ 9,97), y una de 1 millón, unas 20. La base del logaritmo solo cambia un factor constante, por lo que la notación la omite.

¿Por qué los algoritmos O(2ⁿ) y O(n!) resultan poco prácticos?

El trabajo se multiplica con cada elemento adicional. 2ⁿ se duplica cada vez que n aumenta en 1; con n = 100 son unas 1,27 × 10^30 operaciones, o 4,0 × 10^13 años a 10^9 por segundo, unas 2900 veces la edad del universo. n! crece aún más rápido: 20! ya es 2,43 × 10^18, unos 77 años de trabajo. Las búsquedas por fuerza bruta entre todos los subconjuntos u ordenaciones pertenecen a estas clases.

¿Big O indica el tiempo real de ejecución?

No. Big O acota cómo crece el trabajo al aumentar n y omite factores constantes y términos de menor orden: tanto 3n² + 100n como n²/2 son O(n²). Dos algoritmos O(n) pueden diferir varias veces en velocidad, y con n pequeño un método O(n²) puede superar a uno O(n log n). Usa estos tiempos como órdenes de magnitud y después mide el código real con un perfilador.

¿Qué diferencia hay entre Big O, Big Omega y Big Theta?

Big O es una cota superior asintótica; Big Omega (Ω), una cota inferior; y Big Theta (Θ), ambas a la vez, una cota ajustada. La ordenación por mezcla es Θ(n log n) para toda entrada, mientras que la ordenación por inserción es O(n²) en el peor caso y necesita solo n − 1 comparaciones si la entrada ya está ordenada. Knuth expuso estas definiciones en SIGACT News en 1976, y el capítulo 3 de CLRS las sigue.

Acerca de esta calculadora

t=f(n)rf∈{1,log⁡2n,n,nlog⁡2n,n2,n3,2n,n!}\begin{aligned} t &= \frac{f(n)}{r} \\ f &\in \{1, \log_2 n, n, n\log_2 n, \\ &\qquad n^2, n^3, 2^n, n!\}\end{aligned}

Fuentes

  1. Cormen, Leiserson, Rivest, Stein — Introduction to Algorithms, 4th ed., ch. 3 (asymptotic notation)
  2. Knuth, “Big Omicron and big Omega and big Theta”, SIGACT News 8(2), 1976

Verificado con las referencias

Esta calculadora incluye 6 ejemplos resueltos con respuestas de fuentes independientes. Forman parte del conjunto de pruebas y también puedes ejecutarlos aquí.

Pon esta calculadora en tu sitio

Pega esto donde quieras que aparezca la calculadora. Su uso es gratuito, se mantiene al día con las correcciones que hacemos aquí y el crédito que aparece debajo enlaza con la versión completa, para que tus lectores puedan consultarla.

Altura
Vista previa de la inserción

Conserva el crédito. Es la única condición y es lo que mantiene gratuitas estas calculadoras.