Ich versuche einen Weg zu finden, um die Idee des Halting Problem-Beweises so zugänglich wie möglich zu erklären (für CS-Studenten). Das einfachste Argument, das ich gefunden habe, ist dieses ; Dies ist genau die Art der Behandlung, die ich anstrebe. Die Selbstreferenz (insbesondere die Überprüfung, ob ein Programm auf sich selbst anhält) ist jedoch nicht die didaktischste.
Als Beweisskizze frage ich mich, warum wir nicht noch weiter vereinfachen und sagen könnten: Wenn wir ein Programm H(P,I)
für das Halteproblem annehmen , das mit true P(I)
anhält, wenn angehalten wird, und ansonsten mit false anhält, könnten wir ein Programm erstellen der Form:
def Q(J):
if H(Q,J) then loop forever
else halt
... was genau dann ein gültiges Programm ist, wenn das Halteproblem ein gültiges Programm ist. Wir können dann fragen: Wofür sollte H(Q,J)
ein beliebiger Wert zurückgegeben werden J
? Wir sehen in beiden Möglichkeiten einen Widerspruch, und wir schließen daraus, dass ein Programm der Form nicht existieren kann , da die Existenz von H
es uns ermöglicht, das widersprüchliche Programm zu konstruieren .Q
H
Es gibt hier immer noch eine Selbstreferenz darin, dass das Programm Q
prüft, ob es bei der aktuellen Eingabe anhält oder nicht (und das Gegenteil tut), aber für mich scheint dies viel intuitiver zu sein, als eine Situation einzurichten, in der wir einen Aufruf des benötigen Form P(P)
oder H(P,P)
usw. Ich habe jedoch nicht gesehen, dass dieses einfachere Argument verwendet wird, und ich denke, es wäre gewesen, wenn es gültig gewesen wäre. Daher sind meine Fragen:
- Reicht das obige Argument als Beweis (Skizze) für das Halteproblem aus?
- Wenn ja, warum gehen so viele Argumente mit einem verwirrenden Schritt des Formulars einher
P(P)
oderH(P,P)
? (Ist es nur, um die unwichtige "Eingabe" aus der Gleichung zu entfernen?) - Wenn nicht, was fehlt?
- Wenn ja, warum gehen so viele Argumente mit einem verwirrenden Schritt des Formulars einher
Zu diesem Thema gibt es eine Vielzahl verwandter Fragen, z. B.:
- Problem ohne Selbstreferenz stoppen
- Gibt es einen intuitiveren Beweis für die Unentscheidbarkeit des Halteproblems als die Diagonalisierung?
Ich fand auch Erwähnung des Beweises, der auf Berrys Paradoxon basiert, was sehr ansprechend ist. Trotzdem habe ich es noch nicht geschafft, mich davon zu überzeugen, ob das obige spezifische Argument funktioniert oder nicht (auch wenn dies nur zu meinem eigenen Verständnis ist; ich habe das Gefühl, dass mir vielleicht etwas Dummes fehlt und ich möchte wissen, was es ist).