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.