Zur Feier des Geburtstages von Alan Turing veröffentlichte Google ein Doodle mit einer Maschine. Was für eine Maschine ist das Gekritzel? Kann es eine Turing Complete-Sprache ausdrücken?
Es gibt offensichtliche Unterschiede zur klassischen Turingmaschine: ein endliches Band, Einschränkungen, wie der Zustand verbunden werden kann, ...
Die Doodle ist sein noch verfügbar hier
(Das Display oben rechts zeigt die erwartete Ausgabe.)
Das Band in der Mitte ist in Quadrate unterteilt, die ein Leerzeichen, eine Null oder eine Eins enthalten können. Der Kopf befindet sich über einem der Quadrate und dient zum Lesen und Schreiben.
Unter dem Band sehen Sie einen grünen Pfeil, auf den Sie klicken können, um die Maschine zu starten. Daneben befinden sich zwei Kreislinien, von denen einige miteinander verbunden sind. Ich werde sie "Staaten" nennen.
Nach dem Start der Maschine leuchtet der erste Status rechts neben der grünen Taste auf, dann der nächste rechts usw. Jeder Status enthält einen der folgenden Befehle:
- leer = nichts tun (einfach zum nächsten Zustand übergehen)
- 1 = Schreiben Sie an der aktuellen Position des Kopfes eine Eins auf das Band
- 0 = Schreiben Sie an der aktuellen Position des Kopfes eine Null auf das Band
- Pfeil nach links = Bewegen Sie den Kopf einen Schritt nach links
- Pfeil nach rechts = Bewegen Sie den Kopf einen Schritt nach rechts
- Bedingung: Wenn der Wert unter dem Kopf gleich dem auf dem Quadrat angezeigten Wert ist, gehen Sie zur zweiten Zustandszeile. Wenn nicht, fahren Sie mit dem nächsten Status rechts fort
- linker Sprung: Rückkehr zu einem (festen) vorherigen Zustand, aber nur in der oberen Reihe [Ich habe diesen ursprünglich vergessen, danke @Marzio!]
Es gibt keine Möglichkeit, zwei Sprünge (übereinander) zu "überlappen". Die Maschine stoppt, wenn sie einen Zustand verlässt und rechts davon kein nächster Zustand ist.
(Nach dem Stoppen der Maschine wird der Inhalt des Bandes mit dem Inhalt der Anzeige verglichen, aber ich halte dies nicht für Teil der beabsichtigten Funktionalität der Maschine.)
Antworten:
Vorausgesetzt, dass:
... selbst wenn das Doodle des AT möglicherweise nicht vollständig ist (aufgrund des nicht überlappenden Nur-Links-Sprungoperators, der nur in der ersten Reihe verfügbar ist), ist es leistungsstark genug, um die feine Linie der (Un-) Entscheidbarkeit zu überschreiten: - D.
BEARBEITEN: TURING DOODLE TURING VOLLSTÄNDIG
(Ich lasse die vorherige Antwort oben, weil ich nicht sicher bin, ob dieser Teil korrekt ist :-)
Ich denke, dass das Turing Doodle auch mit einem einzigen nicht überlappenden Sprung nach links komplett ist! . Die (einfache) Idee besteht darin, das Band selbst zu verwenden, um den aktuellen Status zu speichern, und mehrere Zellen zu verwenden, um ein größeres Alphabet darzustellen.
Zum Beispiel kann ein 2 Zustände 8 Symbole TM unter Verwendung der folgenden Banddarstellung simuliert werden:
Das Turing-Doodle kann:
Das vollständige Bild finden Sie hier .
quelle
alen turing
. Ich habe es genossen, dies zu lesenDies ist ein Auszug aus dem Original-Turing-Papier "Über berechenbare Zahlen mit einer Anwendung auf das Entscheidungsproblem".
Ein moderner guter Begleiter zu dem von mir empfohlenen Papier ist The Annotated Turing von Charles Petzold.
Wie Sie vielleicht sehen, hat Google nur versucht, einer Maschine zu ähneln, die der Beschreibung des Turing sehr ähnlich ist.
BEARBEITEN: Angenommen, das vollständige TM-Alphabet von Google wird am Ende des Spiels angezeigt, nachdem Sie auf das Häschensymbol geklickt haben und aufgrund der Tatsache, dass es eine unendliche Sequenz erzeugt, mehr Zeilen und Spalten erhalten haben (wir können also davon ausgehen, dass wir beliebige hinzufügen können ), hat linke Sprünge (und überlappt auch linke Sprünge) in jeder Reihe , hat bedingte und bedingungslose Sprünge zwischen benachbarten Reihen, ich denke, es ist Turing vollständig .
quelle
In den Rätseln sind Sprünge auf beiden Linien erlaubt, sie können sich jedoch nicht überlappen. Beim letzten Kaninchensequenz-Doodle am Ende des Spiels erlauben sie Sprünge in jeder Zeile und sie können in Klammern verschachtelt werden, so dass [()] erlaubt ist, aber ([)] scheint nicht erlaubt zu sein.
Ich werde die folgenden Annahmen verwenden:
Mit diesen Annahmen ist die Google Doodle-Maschine vollständig .
Das GDM simuliert das TM wie folgt:
Wählen Sie Ihr bevorzugtes Universal-TM aus und implementieren Sie es wie oben beschrieben, um ein universelles GDM zu erhalten.
quelle