¿Por qué la notación O grande no se parece más a O (c) y O (cn) en lugar de a O (1) y O (n), esto último no tiene sentido?

El objetivo de esta notación es dar el factor dominante (o limitante) de una función. Algunos leen el O como “orden de”: da el orden de una función. El objetivo de hacer esto es descartar los elementos de una función que no son relevantes para la comparación directa de factores limitantes, por lo que si tenía un ^ n + n ^ 2, el n ^ 2 se descarta, al igual que cualquier factor constante de cualquiera de los elementos de la suma.

Si ‘c’ siempre estuviera allí, entonces no tiene sentido incluirlo.

El punto de la notación O grande es describir cómo crece el tiempo de finalización de un algoritmo a medida que crece el tamaño de su conjunto de entrada. ¿No crece? ¿Crece linealmente? ¿Crece como una potencia del tamaño de entrada? ¿Crece exponencialmente? ¿Crece logarítmicamente, etc.? Eso se considera una buena medida de la complejidad algorítmica. Cualquier factor constante es irrelevante para eso, incluso si sabemos lo que es, por lo tanto, tampoco vemos O (2x ^ 2).

[matemáticas] O (c) [/ matemáticas] es equivalente a [matemáticas] O (1) [/ matemáticas]. Del mismo modo, [math] O (n) [/ math] es equivalente a [math] O (cn) [/ math]. Mira la definición y convéncete de que estas afirmaciones son ciertas.

Escribir O (cn) no tendría sentido, porque si en cada situación necesita escribir esta c, no hay razón para no hacer que la notación oculte esta c. Si lo desea, puede escribir “existen c, d, e para que mi algoritmo tenga una complejidad cn ^ 2 + dn + e” y eso es correcto, pero la idea es escribir la misma oración más corta que “mi algoritmo tiene una complejidad O (n ^ 2) “, no tiene sentido decidir que tal vez queremos que esta descripción más breve oculte dye pero que conserve c sin ninguna razón.

More Interesting

¿Hay algún patrón dentro de la secuencia dada?

¿Cómo verificamos la corrección de un algoritmo?

Dada una expresión matemática 2 + 4 * 6 + 8-11, ¿cómo la colocaría entre corchetes de manera que proporcione el valor máximo? ¿Es posible codificar esto?

¿Cuál es el algoritmo de recomendación para StackOverflow?

Soy un programador promedio, me encanta codificar en Java y estoy tratando de mejorar mis habilidades de codificación algorítmica. ¿Cómo puedo mejorarlos?

¿Para qué aplicaciones son especialmente adecuados los lenguajes de programación lógica? ¿Cuándo usarías un lenguaje como Prolog? ¿Cuáles son las aplicaciones más exitosas de la programación lógica?

¿Cuál es el concepto de la función recursiva en matemáticas?

Si el AM y el GM entre dos números están en la relación m: n, ¿cuál es la relación de los dos números?

¿Cuál es el mejor algoritmo / software de compresión hasta ahora? ¿Cómo funciona (vista simple y abstracta) y qué se puede mejorar?

¿Podría alguien explicar las etapas de un algoritmo recursivo que muestra cómo se alcanza la condición de terminación?

¿Implementar un algoritmo de detección de esquinas es un buen ejercicio para la visión por computadora?

¿Qué algoritmo de clasificación se usa en C # collection.sort () y por qué?

¿Cuáles son algunas de las estructuras de datos / algoritmos de clasificación más interesantes?

¿Hay algún algoritmo de corrector ortográfico de aprendizaje no supervisado?

¿Cuál es el número más pequeño [matemática] N [/ matemática] tal que [matemática] N \ equiv 2 \ mod 3, [/ matemática] [matemática] N \ equiv 1 \ mod 5, [/ matemática] [matemática] N \ equiv 4 \ mod 7 [/ matemáticas]?