Questa domanda mi è venuta in mente riguardo al problema dell'arresto e non sono riuscito a trovare una buona risposta online, chiedendomi se qualcuno può aiutare.
È possibile che il problema di arresto sia decidibile per qualsiasi TM su qualsiasi input purché l'ingresso non sia il TM stesso? Fondamentalmente:
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'
Ciò apparentemente risolve la contraddizione. Quando chiamiamo i paradossi Halts "(Halts"), non possiamo aspettarci comportamenti coerenti, ma tutte le altre chiamate a Halts (e Halts) sono legittime e risolvibili.
Capisco che questo non è molto intuitivo. Se alcuni pattern nei bit potessero rivelare il comportamento di tutti i programmi possibili, perché dovrebbe cadere improvvisamente quando TM e input corrispondono? Ma possiamo matematicamente eliminarlo come una possibilità?
E questo ridotto problema di arresto non sarebbe per nulla interessante. Anche se ci fosse qualche programma significativo che prendesse il proprio codice come input, potrebbe essere banalmente riscritto per funzionare su input leggermente diversi. Naturalmente questo suggerimento rende ancora meno comprensibile il motivo per cui potrebbe esistere una soluzione di arresto con questo avvertimento, ma ancora una volta, possiamo davvero eliminare matematicamente questa possibilità?
Grazie per qualsiasi aiuto.