Was passiert, wenn sich der Kopf einer Infinite Time Turing Machine ganz links befindet und das Programm vorschreibt, den Kopf nach links zu bewegen?

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:

  1. Definieren Sie einen zusätzlichen HALTFALL-Zustand, der automatisch auftritt, wenn der Kopf vom Band fällt und alle Berechnungen aufhören;
  2. Ermöglichen Sie die Fortsetzung der Berechnung, nachdem Sie versucht haben, sich von der Zelle ganz links nach links zu bewegen. Aber wie kann dies geschehen?

Ich weiß immer noch nicht, welche Lösung für Infinite Time Turing Machines besser geeignet ist.

Ist das Band links und rechts unendlich?
@Taroccoesbrocco: Das Band ist in eine Richtung unendlich (daher existiert die Zelle ganz links)
Wenn Sie sich in der Zelle ganz links befinden, wie kann die Übergangsfunktion der Maschine vorschreiben, den Kopf nach links zu bewegen? Wenn dies passiert, bedeutet dies, dass Ihre Turing-Maschine nicht gut definiert ist.
@RuggieroRilievi: „Wenn Sie sich in der Zelle ganz links befinden, wie kann die Übergangsfunktion der Maschine vorschreiben, den Kopf nach links zu bewegen?“ — Solche Programme sind durchaus möglich. Sie sind absolut gültige Programme im mathematischen Sinne.
Warum nicht einfach eine Anweisung ignorieren, die dazu führen würde, dass der Kopf vom Band fällt?
Gibt es einen Grund, warum diese Frage spezifisch für Maschinen mit unendlicher Zeit ist?
@ Bram28 Es gibt einige Unterschiede in endlichen und unendlichen Fällen. Die beiden, die einem sofort in den Sinn kommen, sind: (1) Was mit dem Zustand in der Grenze passiert. (2) Was passiert mit Zellen in den Grenzen. Für (1), da das Papier, auf das Bezug genommen wird, einen bestimmten "besonderen Grenzzustand" verwendet, wird dies recht einfach zu handhaben. Für (2), wenn wir eine Zelle darstellen, wie z [ A ] (Wo A { 0 , 1 } ) als [ 0 ] , [ A ] , die Frage ist, wann [ A ] konvertiert zu [ B ] in einer Grenze, was passiert [ 0 ] , [ A ] ? Nun, mit den (angemessenen) Konventionen, die in dem genannten Artikel angegeben sind, lautet die Antwort [ 0 ] , [ B ] . (Fortsetzung)
Wenn wir die Konvention jedoch auf etwas "Unvernünftiges/Dummes" ändern (stabiler Wert von "0", unter Limit, Änderung auf "1" bei Limit usw.), wird es etwas komplizierter (und nicht mehr so ​​​​offensichtlich).

Antworten (2)

Sie haben zwei gute Alternativen zur Lösung der Frage vorgeschlagen. Jetzt sollten Sie fragen:

  1. Gibt es einen Unterschied zwischen diesen beiden?
  2. Wenn es einen Unterschied gibt, bestätigen beide Lösungen immer noch die Hauptsätze über unendlich lange Turing-Maschinen (insbesondere utm- und smn-Theoreme)?

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 N Zu N . Soweit ich das obige Zitat verstehen kann, ist die beabsichtigte Bedeutung, dass es sich um eine Eingabe handelt X N während im Laufe der Berechnung die Köpfe dann vom Band fallen F ( X ) soll undefiniert sein. Das ist, F wird bei der Eingabe als teilweise betrachtet X (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 C 1 . 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 C 2 ) dieselbe Sammlung von Funktionen berechnen (aus N Zu N ) als C 1 ? Rufen Sie die Menge der Funktionen auf ( N Zu N ) berechnet von C 1 , C 2 als A 1 , A 2 bzw. Die Frage ist ob A 1 = A 2 ?

Es gibt zwei Richtungen zur Gleichheit: A 1 A 2 Und A 2 A 1 . Konzentrieren wir uns auf die erste Ungleichung. Wir wollen im Wesentlichen das Modell simulieren C 2 innerhalb C 1 . Betrachten Sie nun eine bestimmte Maschine im Modell C 2 . Wenn wir dieselbe Maschine in simulieren wollen C 1 , 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 [ 0 , 1 , 0 ] 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 [ 1 , 1 , 1 ] die gleiche Anzahl von Malen (also werden die ersten fünf Zellen alle sein [ 1 , 1 , 1 ] ) ---- 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 [ 1 , 0 , 1 ] (im Originalprogramm in angegeben C 2 ) verwenden wir zwei aufeinanderfolgende Zellen. Waren anwesend [ 1 , 0 , 1 ] als zwei Zellen (nebeneinander platziert): [ 0 , 0 , 0 ] , [ 1 , 0 , 1 ] . Die allgemeine Idee ist, dass jede Zelle wie z [ A , B , C ] (im Originalprogramm von C 2 ) dargestellt (in unserer Simulation via C 1 ) durch zwei benachbarte Zellen, die sein werden: [ 0 , 0 , 0 ] , [ A , B , C ] .

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 [ 1 , 1 , 1 ] . Im Originalprogramm (von C 2 ) 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 ( [ 1 , 0 , 1 ] , [ 1 , 0 , 0 ] , R ) (aus S 10 Zu S 11 sagen wir), müssen wir es in weitere Zustände/Übergänge zerlegen. Der Punkt ist, dass [ 1 , 0 , 1 ] wird dargestellt als [ 0 , 0 , 0 ] , [ 1 , 0 , 1 ] (in unserer Simulation). Also, wenn unser Zeiger eingeschaltet war [ 0 , 0 , 0 ] wir gehen zunächst unbedingt einen Schritt nach rechts (mit Zwischenzuständen). Danach werden wir einen Übergang haben ( [ 1 , 0 , 1 ] , [ 1 , 0 , 0 ] , R ) (und dieser Übergang führt zu einem neuen Zustand analog zu S 11 in unserer Simulation). Auf diese Weise wird das ursprüngliche Programm (in C 2 ) eine Zelle verändert [ 1 , 0 , 1 ] Zu [ 1 , 0 , 0 ] . In unserer Simulation (mit program C 1 ), ändern wir die "benachbarten Zellen" [ 0 , 0 , 0 ] , [ 1 , 0 , 1 ] ZU [ 0 , 0 , 0 ] , [ 1 , 0 , 0 ] .

Tut mir leid, dass es etwas langatmig geworden ist. Aber der eigentliche Punkt ist der nach den ersten fünf aufeinanderfolgenden Zellen [ 1 , 1 , 1 ] , in unserer Simulation jede der ursprünglichen Zellen des Formulars [ A , B , C ] (mit A , B , C { 0 , 1 } ) im Programm C 1 werden jetzt durch "zwei benachbarte Zellen" des Formulars dargestellt [ 0 , 0 , 0 ] , [ A , B , C ] . Wenn Sie genau hinsehen, wird das "Herunterfallen des Kopfes vom Band" jetzt durch das Auftreten von zwei aufeinanderfolgenden Zellen des Formulars angezeigt [ 1 , 1 , 1 ] , [ 1 , 1 , 1 ] (wenn wir einen Übergang simulieren, der den Kopf nach links bewegt).

Also jetzt in unserer Simulation des Programms von C 2 (über C 1 ) 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 A 2 A 1 (bis auf den allerletzten Teil bleibt alles beim Alten).

Mein Punkt ist, dass, wenn Sie die Sammlung aller Funktionen (von N Zu N ), welche Konvention Sie auch immer annehmen, es würde keine Rolle spielen. Zum Beispiel können Sie in Ihrem obigen Programm annehmen: (1) das Programm macht eine Schleife (2) das Programm geht in den "speziellen Haltzustand" (wobei die Ausgabe das ist, was sich auf dem Ausgabeband befand). Es würde die Klasse der berechneten Funktionen nicht ändern, egal welche Konvention Sie verwenden.
Ja, ich denke, dass der "spezielle Halt-Zustand" (ein dedizierter ERROR-HALT-Zustand) eine geeignete Lösung ist.
@lyricallywicked Ja, unter solchen Umständen (wo nichts Wesentliches geändert wird) ist es vernünftig, die Konvention zu wählen, mit der man sich wohl fühlt.