¿Existe alguna noción del algoritmo más eficiente posible para alguna tarea?

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.

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.

No, esto se debe al teorema de aceleración de Blum.

Esto establece que para cualquier algoritmo que resuelva algunos problemas determinados, existe un algoritmo aún más rápido para resolverlo.

Ciertamente lo hay. El procesamiento de un conjunto de datos con n elementos se define de manera óptima como tomar solo 1 paso o registrar 2 (n) pasos. Esto significa que un conjunto con 256 elementos se procesa en 1 u 8 pasos, 512 en 1 o 9, por lo que, básicamente, a medida que el tamaño del conjunto se duplica, el procesamiento solo aumenta ligeramente.

Imagine buscar un conjunto de 256 elementos para un valor particular. Si comienza desde el principio y recorre cada elemento, es decir, hasta 256 comprobaciones o equivalentes al tamaño del conjunto.

Ahora, si esa matriz se ha ordenado primero en orden numérico, la búsqueda de un valor puede explotar eso y usar una búsqueda binaria que encontrará el valor en los pasos del log 2 (n): 8 en lugar de 256 o 32 veces más rápido. ¡Cambie ese valor de 256 por mil millones y la búsqueda uno a la vez tomará mil millones de pasos en comparación con solo 30 usando una búsqueda binaria!

Ahora, ¿cómo podrías hacer la búsqueda en un solo paso? Si supieras que los mil millones de números se almacenaron como 1,2,3,4 hasta mil millones y estabas buscando el número 100 millones, ¡podrías ir directamente al número 100 millones y encontrarlo en un solo paso!

Un paso es el máximo teórico, pero log 2 (n) es el siguiente mejor.

No todas las soluciones pueden resolverse en un solo paso y no todas pueden resolverse en pasos de log 2 (n), lamentablemente.

¡Me he alejado deliberadamente de Quantum Computing, que tiene un libro de reglas totalmente diferente!