( UPDATE : Hier wird eine besser formulierte Frage gestellt , da die Kommentare für die akzeptierte Antwort unten zeigen, dass diese Frage nicht genau definiert ist.)
Der klassische Beweis für die Unmöglichkeit des Halteproblems hängt davon ab, einen Widerspruch aufzuzeigen, wenn versucht wird, den Algorithmus der Halteerkennung auf sich selbst als Eingabe anzuwenden. Weitere Informationen finden Sie im Hintergrund unten.
Der aufgezeigte Widerspruch gilt aufgrund eines selbstreferenziellen Paradoxons (wie der Satz "Dieser Satz ist nicht wahr"). Aber wenn wir solche Selbstreferenzen strengstens verboten haben (dh die Tatsache akzeptiert haben, dass solche Selbstreferenzen nicht zum Stillstand gebracht werden können), mit welchem Ergebnis verbleiben wir dann? Ist das Problem des Anhaltens für den verbleibenden Satz nicht selbstreferenzierender Maschinen zum Anhalten entschlossen oder nicht?
Die Fragen sind:
Wenn wir eine Teilmenge aller möglichen Turing-Maschinen betrachten, die nicht selbstreferenzierend sind (dh sich selbst nicht als Eingabe nehmen), was wissen wir über das Problem des Anhaltens für diese Teilmenge?
AKTUALISIEREN
Vielleicht ist eine bessere Neuformulierung dessen, wonach ich suche, ein besseres Verständnis dessen, was eine entscheidbare Menge definiert. Ich habe versucht, den klassischen Unentscheidbarkeitsbeweis zu isolieren, da er keine Informationen über die Unentscheidbarkeit enthält, außer in den Fällen, in denen Sie HALT für sich selbst ausführen.
Hintergrund: Unter der Annahme eines Widerspruchs, dass es eine Turing-Maschine , die über die Eingabe M entscheiden kann, die eine Codierung für eine Turing-Maschine ist, und X , ob M ( X ) anhält oder nicht . Betrachten Sie dann eine Turing-Maschine K , die M und X nimmt und Q verwendet , um zu entscheiden, ob M ( X ) anhält oder nicht, und dann das Gegenteil tut, dh K hält an, wenn M ( X ) nicht anhält und nicht anhält, wenn M ( X )hält an. Dann demonstriert einen Widerspruch, da K anhalten sollte, wenn es nicht anhält, und nicht anhält, wenn es anhält.
Motivation: Ein Kollege arbeitet an der formalen Verifizierung von Softwaresystemen (insbesondere, wenn das System bereits auf Quellcodeebene getestet wurde und wir es für seine kompilierte Version vorenthalten möchten, um Compilerprobleme zu neutralisieren), und in seinem Fall kümmert er sich um a Spezieller Satz eingebetteter Steuerungsprogramme, von denen wir sicher sind, dass sie nicht selbstreferenzierend sind. Ein Aspekt der Überprüfung, die er durchführen möchte, ist, ob garantiert wird, dass das kompilierte Programm anhält, wenn der eingegebene Quellcode nachweislich beendet wird.
AKTUALISIEREN
Basierend auf den Kommentaren unten erkläre ich die Bedeutung von nicht selbstreferenzierenden Turing-Maschinen.
Ziel ist es, sie als die Menge zu definieren, die nicht zu dem im Beweis gestellten Widerspruch führt (vgl. "Hintergrund" oben). Es könnte wie folgt definiert werden:
Unter der Annahme, dass es eine Turing-Maschine , die das Halteproblem für einen Satz von Turing-Maschinen S entscheidet , ist S in Bezug auf Q nicht selbstreferenzierend, wenn es alle Maschinen ausschließt, die Q auf S aufrufen (direkt oder indirekt). (Das bedeutet natürlich, dass Q kein Mitglied von S sein kann .)
Um zu klären, was unter indirektem Aufrufen von auf S zu verstehen ist:
Das Aufrufen von auf S wird durch eine Turing-Maschine Q mit einem Satz von Zuständen und bestimmten möglichen Anfangseingaben auf dem Band (die einem Mitglied von S entsprechen ) bezeichnet, wobei der Kopf anfänglich am Anfang dieser Eingabe steht. Eine Maschine W ruft Q auf S "indirekt" auf, wenn es eine (endliche) Folge von Schritten gibt, die W unternehmen würde, um ihre Konfiguration "homomorph" zur Anfangskonfiguration von Q ( S ) zu machen .
UPDATE 2
Aus der folgenden Antwort geht hervor, dass es unendlich viele Turing-Maschinen gibt, die dieselbe Aufgabe ausführen, und daher nicht eindeutig ist. Wir ändern die obige Definition, indem wir sagen, dass Q keine einzelne Turing-Maschine ist, sondern die (unendliche) Menge aller Computer die gleiche Funktion (HALT), wobei HALT die Funktion ist, die entscheidet, was eine Turing-Maschine bei einer bestimmten Eingabe anhält.
UPDATE 3
Die Definition des Turing Machine Homomorphismus:
A TM A ist homomorph zu TM B, wenn der Übergangsgraph von A homomorph zu dem von B ist, im üblichen Sinne von Homomorphismen von Graphen mit markierten Knoten UND Kanten. Ein Übergangsgraph (V, E) eines TM ist derart, dass V = Zustände, E = Übergangsbögen zwischen Zuständen sind. Jeder Bogen ist mit (S, W, D) gekennzeichnet. S = Symbol auf dem Band und W = Symbol, in das geschrieben werden soll, und D = Richtung, in die sich der Kopf bewegt.