Was passiert, wenn sich der Kopf einer Infinite Time Turing Machine in der ersten (ganz linken) Zelle befindet und die aktuelle Anweisung der Maschine vorschreibt, den Kopf nach links zu bewegen? Ich habe im Originalpapier keine explizite Regel für eine solche Situation gesehen. Ich habe eine Lösung gesehen, die das Alphabet um ein zusätzliches Symbol erweitert, aber ich interessiere mich für eine Lösung, die das Alphabet mit zwei Symbolen (ein leeres Symbol und ein nicht leeres Symbol) nicht erweitert.
Die folgenden Auszüge sind dem Artikel „The halting problem is decidable on a set of asymptotic probability one“ entnommen :
Wenn die Maschine versucht, sich von der Zelle ganz links nach links zu bewegen, dann fällt der Kopf vom Band und alle Berechnungen hören auf.
[...]
Wenn der Kopf vom Band fällt, kann die Berechnung den Haltezustand nicht erreichen [ ...
]
Berechnungen, bei denen der Kopf vom Band fällt, werden nicht als anhalten gezählt
[...] Der Leser wird es schon haben bemerkte natürlich, dass unser Argument nicht mit Turing-Maschinen funktioniert, die doppelt unendliche Bänder verwenden, ein weiteres gängiges Modell, bei dem es nicht möglich ist, dass der Kopf vom Band fällt. Und es funktioniert auch nicht mit den unendlichen Einweg-Bandmodellen, die es ermöglichen, die Berechnung irgendwie fortzusetzen, nachdem versucht wurde, sich von der Zelle ganz links nach links zu bewegen.
Also ich sehe zwei mögliche Lösungen:
Ich weiß immer noch nicht, welche Lösung für Infinite Time Turing Machines besser geeignet ist.
Sie haben zwei gute Alternativen zur Lösung der Frage vorgeschlagen. Jetzt sollten Sie fragen:
Es lohnt sich, selbst darüber nachzudenken, da dies den Unterschliff von Turing-Maschinen vertieft.
In Bezug auf die Äquivalenz der beiden Lösungen können wir, soweit ich sehen kann, eine Fall-of-the-Tape-Maschine in eine Maschine umwandeln, die sich einfach nicht nach links von der ersten Zelle bewegt, indem wir eine spezielle Markierung an der Anfang des Bandes (und den Rest der Eingabe leicht nach rechts verschieben, was dauern kann Schritte für eine unendliche Turing-Maschine). Für die andere Richtung können wir wieder eine Markierung ganz links platzieren und in einen speziellen Zustand gehen, wenn wir jemals versuchen, uns von dieser Markierung nach links zu bewegen.
Alles in allem gibt es also keinen großen Unterschied und es spielt keine Rolle, was Sie tun.
So wie ich es verstehe, gilt Ihre Sorge dem Rechenmodell in diesem Papier. Jetzt basierend auf dem ersten Zitat in Ihrer Frage (dieses Zitat stammt aus der Mathoverflow-Version Ihrer Frage, in der Sie einen Satz aus diesem Papier zitiert haben):
Die Berechnung endet nur, wenn der Haltezustand explizit erhalten wird, und in diesem Fall ist die Ausgabe das, was auch immer auf das Ausgabeband geschrieben wird. (Wenn der Kopf vom Band fällt, erfolgt keine Ausgabe.)
Um genau zu sein, nehmen wir an, wir betrachten nur Funktionen von Zu . Soweit ich das obige Zitat verstehen kann, ist die beabsichtigte Bedeutung, dass es sich um eine Eingabe handelt während im Laufe der Berechnung die Köpfe dann vom Band fallen soll undefiniert sein. Das ist, wird bei der Eingabe als teilweise betrachtet (dasselbe wie nie anhalten).
Im Folgenden gehe ich davon aus, dass wir eine einfache Möglichkeit haben, die Ausgabe mit jeder möglichen Konfiguration auf dem Ausgabeband in Beziehung zu setzen. Eine Möglichkeit besteht beispielsweise darin, die Anzahl der aufeinanderfolgenden Einsen (beginnend bei der Zelle an der 0-Position), die auf dem Ausgabeband auftreten, als Ausgabe zu nehmen. Und wenn das Band nur 1 ist, dann nehmen Sie den Ausgang auf 0.
Nennen Sie nun das Rechenmodell mit der obigen Konvention als . Nun, eine Möglichkeit, wie ich Ihre Frage interpretiere (dies ist möglicherweise nicht die beste Art), ist, was wäre, wenn wir die Konvention ändern und erklären würden, dass, wenn der Kopf für eine Eingabe vom Band fällt, wir die Ausgabe als das deklarieren, was sich auf dem Ausgabeband befand Zeit. Würde das resultierende Rechenmodell (z ) dieselbe Sammlung von Funktionen berechnen (aus Zu ) als ? Rufen Sie die Menge der Funktionen auf ( Zu ) berechnet von , als , bzw. Die Frage ist ob ?
Es gibt zwei Richtungen zur Gleichheit: Und . Konzentrieren wir uns auf die erste Ungleichung. Wir wollen im Wesentlichen das Modell simulieren innerhalb . Betrachten Sie nun eine bestimmte Maschine im Modell . Wenn wir dieselbe Maschine in simulieren wollen , wir wollen eine (allgemeine) Möglichkeit haben, zu "wissen", wann der Kopf vom Band fällt. Denn in diesem Fall möchten wir das ausgeben, was sich auf dem Ausgabeband befindet (anstatt einen undefinierten Wert zurückzugeben).
Das erste ist, dass ich, da es drei Bänder gibt, so etwas schreiben werde um eine bestimmte (zusammengesetzte) "Zelle" (die aus drei einzelnen Zellen zusammengesetzt ist) zu bezeichnen. Wenn sich das Programm nun im Startzustand befindet, bewegen wir uns zuerst nach rechts (z. B. 5 Mal) und drucken die gleiche Anzahl von Malen (also werden die ersten fünf Zellen alle sein ) ---- Dies ist jedoch nach einer erneuten Anpassung der uns gegebenen Eingaben . Der Haupttrick besteht nun darin, dass ( nach den ersten fünf Zellen ) in unserer Simulation eine Zelle wie z (im Originalprogramm in angegeben ) verwenden wir zwei aufeinanderfolgende Zellen. Waren anwesend als zwei Zellen (nebeneinander platziert): , . Die allgemeine Idee ist, dass jede Zelle wie z (im Originalprogramm von ) dargestellt (in unserer Simulation via ) durch zwei benachbarte Zellen, die sein werden: , .
Jetzt an Grenzen, da sich unsere Maschine in einen speziellen "Grenzzustand" bewegt, wobei der Kopf auf die äußerst linke Position eingestellt ist. Wenn wir uns also im Grenzzustand befinden, bewegen wir uns wieder fünfmal zum richtigen Druck . Im Originalprogramm (von ) immer wenn es einen Übergang von einem Zustand in einen anderen hat, müssen wir es in unserer Simulation zerlegen. Wenn der ursprüngliche Übergang war sagen (aus Zu sagen wir), müssen wir es in weitere Zustände/Übergänge zerlegen. Der Punkt ist, dass wird dargestellt als , (in unserer Simulation). Also, wenn unser Zeiger eingeschaltet war wir gehen zunächst unbedingt einen Schritt nach rechts (mit Zwischenzuständen). Danach werden wir einen Übergang haben (und dieser Übergang führt zu einem neuen Zustand analog zu in unserer Simulation). Auf diese Weise wird das ursprüngliche Programm (in ) eine Zelle verändert Zu . In unserer Simulation (mit program ), ändern wir die "benachbarten Zellen" , ZU , .
Tut mir leid, dass es etwas langatmig geworden ist. Aber der eigentliche Punkt ist der nach den ersten fünf aufeinanderfolgenden Zellen , in unserer Simulation jede der ursprünglichen Zellen des Formulars (mit ) im Programm werden jetzt durch "zwei benachbarte Zellen" des Formulars dargestellt , . Wenn Sie genau hinsehen, wird das "Herunterfallen des Kopfes vom Band" jetzt durch das Auftreten von zwei aufeinanderfolgenden Zellen des Formulars angezeigt , (wenn wir einen Übergang simulieren, der den Kopf nach links bewegt).
Also jetzt in unserer Simulation des Programms von (über ) Immer wenn wir feststellen, dass der "Kopf vom Band fällt", halten wir sofort an (nachdem wir die Ausgabe in die gewünschte Form geändert haben). Beachten Sie, dass ein wenig geändert werden muss, wenn wir zeigen wollen (bis auf den allerletzten Teil bleibt alles beim Alten).
Taroccoesbrocco
lyrisch geil
Ruggiero Rilievi
lyrisch geil
Matthias Samuel
Bram28
SSequenz
SSequenz