Sto cercando di trovare un modo per spiegare l'idea della prova del problema di Halting nel modo più accessibile possibile (agli studenti universitari). L'argomento più semplice che ho trovato è questo ; questo è precisamente lo stile di trattamento a cui sto puntando. Tuttavia, l'auto-riferimento (in particolare, verificare se un programma si ferma su se stesso) non è il più didattico.
Quello che mi chiedo, come uno schizzo di prova, è perché non potremmo semplificare ulteriormente e dire: se assumiamo un programma H(P,I)
per il problema di Halting che si ferma con vero se si P(I)
ferma e si ferma con falso altrimenti, allora potremmo creare un programma del modulo:
def Q(J):
if H(Q,J) then loop forever
else halt
... che è un programma valido se e solo se Halting Problem è un programma valido. Possiamo quindi chiedere: cosa dovrebbe H(Q,J)
restituire un valore arbitrario per J
? Vediamo una contraddizione in entrambe le possibilità e concludiamo che poiché l'esistenza di H
ci consente di costruire il programma contraddittorio Q
, quindi un programma della forma H
non può esistere.
C'è ancora qualche auto-riferimento qui nel fatto che il programma Q
controlla se si ferma o meno sull'input corrente (e fa il contrario), ma per me questo sembra molto più intuitivo che impostare una situazione in cui abbiamo bisogno di una chiamata del forma P(P)
o H(P,P)
, ecc. Tuttavia, non ho visto questo argomento più semplice usato, e penso che sarebbe stato se fosse valido. Quindi le mie domande sono:
- L'argomento di cui sopra è sufficiente come prova (schizzo) del problema di Halting?
- Se è così, perché tanti argomenti vanno con una fase confusa del modulo
P(P)
oH(P,P)
? (È solo per rimuovere l '"input" non importante dall'equazione?) - In caso contrario, cosa manca?
- Se è così, perché tanti argomenti vanno con una fase confusa del modulo
Esistono diverse domande correlate su questo argomento, come ad esempio:
- Arrestare il problema senza autoreferenzialità
- Esiste una prova più intuitiva dell'indecidibilità del problema di arresto rispetto alla diagonalizzazione?
Ho anche trovato la menzione della prova basata sul paradosso di Berry, che è abbastanza interessante. Tuttavia, non sono ancora riuscito a convincermi se la specifica argomentazione di cui sopra funziona (anche se solo per la mia comprensione; sento che forse mi manca qualcosa di stupido e vorrei sapere di cosa si tratta).