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
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.
Por AdminRedactado con herramientas de redacción con IAActualizado Ejemplos verificados: 6
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.
| Clase | Operaciones | log₁₀ | Tiempo |
|---|---|---|---|
| O(1) | 1 | 0 | 1 ns |
| O(log n) | 9,9658 | 0,999 | 9,966 ns |
| O(n) | 1 000 | 3 | 1 µs |
| O(n log n) | 9 965,78 | 3,999 | 9,966 µs |
| O(n²) | 1 000 000 | 6 | 1 ms |
| O(n³) | 1 000 000 000 | 9 | 1 s |
| O(2ⁿ) | 1,07151 × 10³⁰¹ | 301,03 | 3,395 × 10²⁸⁴ años |
| O(n!) | 4,02387 × 10²⁵⁶⁷ | 2 567,605 | 1,275 × 10²⁵⁵¹ años |
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.
9,966 µs
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.
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.
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.
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.
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.
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.
| Escenario | Operaciones del modelo | Tiempo del modelo |
|---|---|---|
| Predeterminado | 9965,78 | 9,966 µs |
| Cuadrático con mil elementos | 1,00000E+6 | 1 ms |
| Exponencial con cien elementos | 1,26765E+30 | 4,017 × 10¹³ años |
| Factorial de veinte | 2,43290E+18 | 77,1 años |
| Logaritmo de uno | 0 | 0 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.
Fuente de comprobación: Cálculo independiente
Fuente de comprobación: Cálculo independiente
Fuente de comprobación: Cálculo independiente
Fuente de comprobación: Cálculo independiente
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.
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.
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.
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.
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.
Esta calculadora incluye 6 ejemplos resueltos con respuestas de fuentes independientes. Forman parte del conjunto de pruebas y también puedes ejecutarlos aquí.