En términos de complejidad de tiempo y espacio, existe la noción de asintóticamente óptimo. Por ejemplo, si tiene una matriz de n elementos y necesita visitarlos todos, no puede haber una forma más rápida que [math] O (n) [/ math], porque necesita visitarlos todos.
La clasificación por comparación no se puede hacer más rápido que [math] O (n * ceil (log_2 (n))) [/ math], que a menudo se acorta a [math] O (n * log_2 (n)) [/ math].
Encontrar un valor en una matriz ordenada es igualmente [math] O (ceil (log_2 (n))) [/ math] – ordenación binaria.
- ¿Cuántos rectángulos de 3 × 5 caben en un rectángulo de 18 x 26? ¿Hay una manera simple de calcular?
- Solo conozco algunos conceptos básicos de c ++. ¿Qué libros o tutoriales debo consultar para resolver problemas en spoj y codechef?
- Cómo resolver el problema ADDGP en SPOJ
- ¿Qué temas básicos hay que saber en C ++ antes de aprender estructuras de datos y algoritmos?
- ¿Qué es un algoritmo eficiente para encontrar un circuito euleriano en un gráfico no dirigido?
Todos estos son conocidos y demostrables. El problema más famoso en CS en este momento es si [math] P \ subset NP [/ math]. Una prueba de que es cierto implicaría una solución para resolver cualquier problema de NP en el tiempo polinomial, porque cualquier problema de NP debe reducirse a cualquier otro problema de NP en la mayoría de los casos de polinomios. Entonces, resolver uno en poli tiempo significa resolverlos todos en poli tiempo.
Como tal, hay muchos problemas para los que simplemente no sabemos cuál es el algoritmo más rápido, pero existe la noción de la solución más rápida.