Diese Frage kam mir über das Problem des Anhaltens und ich konnte online keine gute Antwort finden und fragte mich, ob jemand helfen kann.
Ist es möglich, dass das Stoppproblem für jedes TM an einem Eingang entscheidbar ist, solange der Eingang nicht das TM selbst ist? Grundsätzlich:
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'
Dies löst scheinbar den Widerspruch. Wenn wir die paradoxen Halts (Halts) nennen, können wir kein konsistentes Verhalten erwarten, aber alle anderen Aufrufe von Halts (und Halts) sind legitim und lösbar.
Ich verstehe, dass dies sehr unintuitiv ist. Wenn ein Muster in den Bits das Verhalten aller möglichen Programme aufzeigen könnte, warum würde es dann plötzlich auseinanderfallen, wenn TM und Eingang übereinstimmen? Aber können wir dies mathematisch als eine Möglichkeit eliminieren?
Und dieses reduzierte Halteproblem wäre überhaupt nicht uninteressant. Selbst wenn es ein aussagekräftiges Programm gäbe, das seinen eigenen Code als Eingabe verwendet, könnte es trivial umgeschrieben werden, um mit etwas anderen Eingaben zu arbeiten. Natürlich macht dieser Vorschlag es noch weniger verständlich, warum mit dieser einen Einschränkung eine Lösung zum Stoppen existieren könnte, aber können wir diese Möglichkeit wirklich mathematisch ausschließen?
Vielen Dank für jede Hilfe.
Antworten:
Aber wir können Ihre Einschränkung leicht umgehen. Angenommen, ein Programm kehrt die Bits der Eingabe um und ruft Ihr für das Ergebnis auf. Definieren dann mit allen umgekehrten Bits (dh 0 für 1s, 1s für 0s). Dann können wir Ihr mit aufrufen und kehren zum ursprünglichen Problem zurück.G H′ !H H′ G(!H)
quelle
Erinnern Sie sich an den Standardbeweis für die Unentscheidbarkeit des Halteproblems. Nehmen wir an, dass einige Maschinen- das Halteproblem entscheidet und lassen die Maschine, die am Eingang verwendet zu bestimmen , ob stoppt , und wenn ja, - Schleifen; Andernfalls wird angehalten. Jetzt wird genau dann angehalten, wenn es nicht anhält.Q ⟨ M ⟩ H M ( ⟨ M ⟩ ) Q Q Q ( ⟨ Q ⟩ )H Q ⟨M⟩ H M(⟨M⟩) Q Q Q(⟨Q⟩)
Nein. Wenn Sie die Definition des Stoppproblems auf diese Weise ändern, funktioniert der Beweis weiterhin. Wir interessieren uns nicht , was passiert , wenn empfängt als Eingang , da der Widerspruch kommt , nachdem wir Eingang geben zu .⟨ H ⟩ ⟨ Q ⟩ , ⟨ Q ⟩ HH ⟨H⟩ ⟨Q⟩,⟨Q⟩ H
Zweitens, wenn Sie modifiziert zu erkennen , dass die Eingabe, könnten wir den gleichen Widerspruch unter Verwendung eines beliebige andere Maschine bekommen ‚die äquivalent ist in dem Sinne , dass für jede Eingabe , stoppt , wenn und nur dann , wenn , angehalten wird . Es gibt unendlich viele davon und kann nicht alle erkennen, da nicht entschieden werden kann, ob zwei Turing-Maschinen gleichwertig sind.Q ' Q w Q ' ( w ) Q ( w ) H.H Q′ Q w Q′(w) Q(w) H
quelle