Para una función dada [math] f (x) [/ math]:
- Elija una función arbitraria [matemática] g (x) [/ matemática] y constantes positivas arbitrarias [matemática] c [/ matemática] y [matemática] k [/ matemática].
- Verificar [matemáticas] | f (c) | \ leq k | g (c) | [/ matemáticas]. Si es falso, vaya al paso 1.
- Incremente [math] c [/ math] en una pequeña cantidad.
- Ve al paso 2.
- Felicidades, acabas de mostrar [matemáticas] f (x) \ en O (g (x)) [/ matemáticas].
Por supuesto, eso puede llevar algo de tiempo. Puede sentir la necesidad de omitir algunos de los pasos mediante el uso de elementos como la inducción estructural, las relaciones de recurrencia o incluso la simple inspección del algoritmo subyacente; está bien, todos hacen trampa.
En serio, el análisis de complejidad depende en gran medida del tipo de función examinada y no existe un método simple infalible que sea de aplicación universal, especialmente para una función de recuadro negro. La única forma rápida y sucia es elegir un límite superior que crezca horriblemente, como el de Ackermann, y elegir [math] \ Omega (1) [/ math] para el límite inferior. Pero ese truco solo se puede hacer una vez, y lo más probable es que te muestre la puerta durante una entrevista.
- ¿Cuál es la forma más rápida de invertir una cadena con más de 10000 caracteres?
- ¿Cómo funcionan los algoritmos de Google en los motores de búsqueda?
- ¿Qué es la notación O grande? ¿Y deberían saberlo los programadores principiantes?
- ¿Qué nuevos algoritmos ha creado Google?
- ¿La programación competitiva se volverá aún más difícil?