¿Existe un algoritmo para el siguiente problema:
Dada una máquina de Turing que decide un lenguaje L , ¿hay una máquina de Turing M 2 que decide L de modo que t 2 ( n ) = o ( t 1 ( n ) ) ?
Las funciones y t 2 son los tiempos de funcionamiento más desfavorables de las máquinas Turing M 1 y M 2 respectivamente.
¿Qué pasa con la complejidad del espacio?
Respuestas:
Aquí hay un argumento simple para mostrar que son indecidibles, es decir, no hay algoritmos para verificar si un algoritmo dado es óptimo con respecto a su tiempo de ejecución o uso de memoria.
Reducimos el problema de detención en la cinta en blanco a su problema sobre la optimización del tiempo de ejecución.
Sea una máquina de Turing dada. Sea N la siguiente máquina de Turing:METRO
: en la entrada n 1. Ejecute M en una cinta en blanco para (como máximo) n pasos. 2. Si M no se detiene en n pasos, ejecute un bucle de tamaño 2 n , luego devuelva NO. 3. De lo contrario, devuelva SÍ.N n
M n
M n 2n
Hay dos casos:
Si no se detiene en la cinta en blanco, la máquina N funcionará durante Θ ( 2 n ) pasos en la entrada n . Entonces su tiempo de ejecución es Θ ( 2 n ) . En este caso, N obviamente no es óptimo.M N Θ(2n) n Θ(2n) N
Si detiene en una cinta en blanco, la máquina N se ejecutará durante un número constante de pasos para todos los n lo suficientemente grandes , por lo que el tiempo de ejecución es O ( 1 ) . En este caso, N es obviamente óptimo.M N n O(1) N
En breve:
Se puede usar un argumento similar para el espacio, es decir, también es indecidible verificar si una máquina de Turing dada es óptima con respecto al espacio que usa.
Incluso una afirmación más fuerte es verdadera: no podemos decidir si una función computable dada es un límite superior en la complejidad de tiempo de calcular una función computable dada. Del mismo modo para el espacio. Es decir, incluso la teoría básica de la complejidad no puede ser automatizada por algoritmos (lo que puede considerarse una buena noticia para los teóricos de la complejidad).
fuente
Como otros mencionaron, la respuesta es no.
Pero hay un interesante artículo escrito por Blum " Una teoría independiente de la máquina sobre la complejidad de las funciones recursivas ". Mostró que hay algunas funciones con la propiedad de que no importa qué tan rápido pueda ser un programa para calcular estas funciones, existe otro programa para calcularlas mucho más rápido .
Una propiedad muy bonita!
fuente
¡Decir ah! Si la respuesta fuera sí, estaríamos viviendo en un mundo diferente.
Desafortunadamente, esto no es posible, y de hecho, personalmente creo que probar la optimización (no trivial) es el problema más interesante (y difícil) en informática. Hasta donde sé, me alegraría que me corrigieran, no existe ningún resultado de optimización para ningún problema polinómico (excepto los resultados triviales de optimización, por supuesto, de los algoritmos que toman un tiempo proporcional al tamaño de entrada).
fuente