Se me ocurrió esta pregunta sobre el problema de detención y no pude encontrar una buena respuesta en línea, preguntándome si alguien puede ayudar.
¿Es posible que el problema de detención sea decidible para cualquier TM en cualquier entrada, siempre que la entrada no sea la propia TM? Básicamente:
Halts(TM, I)
IF TM == I:
Undecidable, return a random result/throw an exception, whatever
ELSE:
Solve the problem
Halts'(X)
IF Halts(X, X):
Loop infinitely
ELSE:
Print 'done'
Esto aparentemente resuelve la contradicción. Cuando llamamos a las paradas paradójicas '(paradas'), no podemos esperar un comportamiento consistente, pero todas las otras llamadas a paradas (y paradas ') son legítimas y solucionables.
Entiendo que esto es muy poco intuitivo. Si algún patrón en los bits pudiera revelar el comportamiento de todos los programas posibles, ¿por qué se desmoronaría de repente cuando la TM y la entrada coincidan? ¿Pero podemos eliminar matemáticamente esto como una posibilidad?
Y este reducido problema de detención no sería nada interesante. Incluso si hubiera algún programa significativo que tomara su propio código como entrada, trivialmente podría reescribirse para trabajar en una entrada ligeramente diferente. Por supuesto, esta sugerencia hace que sea aún menos comprensible por qué podría existir una solución de detención con esta advertencia, pero de nuevo, ¿podemos realmente eliminar matemáticamente esta posibilidad?
Gracias por cualquier ayuda.
Respuestas:
Pero podemos evitar fácilmente su restricción. Suponga un programa que invierte los bits de la entrada y llama a su sobre el resultado, luego defina con todos los bits invertidos (es decir, 0 para 1s, 1s para 0s). Entonces podemos llamar a su con y volvemos al problema original.sol H′ ! H H′ G ( ! H)
fuente
fuente