Esto es lo que se llama la notación big-O .
Es un concepto utilizado al describir la complejidad de los algoritmos.
Básicamente, el tiempo de ejecución de los algoritmos depende de la entrada y, como tal, es variable. Además, el tiempo no es una buena unidad de medida para la complejidad, ya que depende de muchos factores, incluida la máquina en la que se ejecuta el algoritmo.
Por esta razón, usamos el número de operaciones en función de la longitud de entrada para describir la complejidad de un algoritmo.
- ¿Por qué la construcción teórica de N tiene la función sucesora definida como s (n) = {n} U n y no solo {n}?
- ¿Cómo resolverías cos3x-cos2x = sin3x-sin2x?
- Si la suma de m términos de una progresión aritmética es n, y la suma de n términos es m, entonces ¿cuál es la suma de los términos (m + n)?
- ¿Cómo ordenaría una matriz 2D de manera que las filas y columnas se clasifiquen en orden creciente? Los elementos de las filas deben ser únicos.
- ¿Cuál es el algoritmo más rápido para generar todos los números [math] abcdefgh [/ math] de modo que [math] a \ leq b \ leq \ cdots \ leq h [/ math]?
Dado eso, decir que la complejidad de un algoritmo es [matemática] O (g (x)) [/ matemática] significa que requiere operaciones [matemática] g (x) [/ matemática] en el peor de los casos . Por ejemplo, la complejidad de un algoritmo de ordenación de listas erróneas puede ser [matemática] O (n ^ 2) [/ matemática], donde [matemática] n [/ matemática] es el tamaño de la entrada, ya que necesita verificar entre sí valor para determinar a dónde va el actual.
También hay otras dos funciones, [math] \ omega (g (x)) [/ math] y [math] \ theta (g (x)) [/ math], que significan respectivamente que el algoritmo requiere al menos [math] ] g (x) [/ math] y exactamente [math] g (x) [/ math] operaciones para completar.