Estás cerca. La notación O grande caracteriza la tasa de crecimiento de la función; es decir, qué tan rápido crece la función cuando el argumento es cada vez más grande. En forma matemática se lee
[matemáticas] f (x) = O (g (x)) \ text {as} x \ to \ infty [/ math]
aquí,
* [matemáticas] f (x) [/ matemáticas] es su función de interés real. Puede ser tan simple como [matemática] f (x) = x ^ 2 [/ matemática] o tan compleja como una red neuronal con un circuito de retroalimentación.
* [matemática] g (x) [/ matemática] es una función que es representativa de la tasa de crecimiento de [matemática] f (x) [/ matemática].
A veces se pueden usar reglas simples para determinar g (x). Por ejemplo, [math] 5x ^ 2 + 100x = O (x ^ 2) \ text {as} x \ to \ infty [/ math], porque para cualquier suma de términos, se elige un término con la mayor tasa de crecimiento, mientras que para la producción , las constantes se caen. Uno puede, por supuesto, demostrar por qué funciona de esta manera.
Ahora, aplicado a los algoritmos, [math] f (x) [/ math] representa una cantidad de pasos necesarios para ejecutar un algoritmo para un tamaño de entrada dado x, mientras que [math] g (x) [/ math] es representativo de un orden de complejidad de este algoritmo. Cuando el tamaño de entrada se aproxima al infinito, [matemática] f (x) [/ matemática] y [matemática] g (x) [/ matemática] convergen.
- ¿Cuál es la forma lógica de resolver el problema SPOJ 'Palin'?
- ¿Qué algoritmo debo usar para la generación de código para mi AST?
- ¿Cuál es el mejor algoritmo de compresión de imágenes y cuál es el algoritmo de compresión de Facebook?
- ¿Por qué un algoritmo de búsqueda binaria se considera más importante que la búsqueda lineal menos complicada?
- ¿Cómo funcionan los algoritmos de Google en los motores de búsqueda?
En cuanto a su última pregunta, la notación big-O se puede usar para las tres medidas: complejidad del peor de los casos, complejidad del caso promedio y complejidad del mejor caso. Puede ser un poco confuso, porque en matemáticas, big-O representa un límite superior de la tasa de crecimiento de una función. Pero aún se puede decir que, por ejemplo, O (n) es un límite superior del número de operaciones para el mejor de los casos, mientras que [math] O (n ^ 2) [/ math] es un límite superior del peor de los casos para un tamaño de entrada n.