Ich habe mit der Maze-Demo von Google Blocky herumgespielt und mich an die alte Regel erinnert: Wenn Sie ein Labyrinth lösen möchten, halten Sie einfach Ihre linke Hand an der Wand. Dies funktioniert für jedes einfach verbundene Labyrinth und kann von einem endlichen Wandler implementiert werden.
Lassen Sie unseren Roboter durch einen Wandler mit den folgenden Aktionen und Observablen dargestellt werden:
- Aktionen: vorwärts gehen ( ), links abbiegen ( \ leftarrow ), rechts abbiegen ( \ rightarrow )
- Observables: Wand voraus ( ), keine Wand voraus ( )
Dann können wir den linken Labyrinthlöser wie folgt erstellen (entschuldigen Sie meine faule Zeichnung):
Wenn wir ein Observable sehen, folgen wir der entsprechenden Kante außerhalb des Zustands, während wir die mit dieser Kante verbundene Aktion ausführen. Dieser Automat löst alle einfach verbundenen Labyrinthe, obwohl es nach Sackgassen einige Zeit dauern kann. Wir nennen einen anderen Automaten besser als wenn:
macht streng mehr Schritte auf nur einer endlichen Anzahl von Labyrinthen, und
unternimmt auf einer unendlichen Anzahl von Labyrinthen streng weniger Schritte (im Durchschnitt; für probabilistische Varianten).
Meine zwei Fragen:
Gibt es einen endlichen Automaten, der besser ist als der oben gezeichnete? Was ist, wenn wir probabilistische Wandler zulassen?
Gibt es einen endlichen Automaten zum Lösen von Labyrinthen, die nicht unbedingt einfach miteinander verbunden sind?
quelle
Antworten:
Wenn ich die Frage gut verstanden habe, denke ich, dass Sie einen Beschleunigungstrick anwenden können, um schnellere Automaten auf einer unendlichen Anzahl von Labyrinthen zu erhalten (vorausgesetzt, der Ausgang befindet sich an einer der Grenzen): Sie können einfach die internen Zustände verwenden, um a zu speichern endliche Anzahl von Schritten und Sackgassen wie in der Abbildung erkennen:
Wenn sich ein rechts folgender Automat in Position und sein Zustand "signalisiert", dass er gerade einem geschlossenen Quadrat gefolgt ist ( mit fester Größe codiert, kein beliebiges großes Quadrat ), kann er sicher nach links abbiegen und vermeiden, die Sackgasse zu besuchen Zone. Wie in meinem Kommentar unten unterstrichen, wendet der Automat die Verknüpfung auf jedes Labyrinth an, das ein (oder mehrere) "Submazes" wie das in der Abbildung enthält, sodass er bei unendlich vielen Labyrinthen eine bessere Leistung erzielt. Auf den Labyrinthen, die kein Submaze wie das in der Abbildung enthalten, funktioniert es wie ein Standardautomat für die rechte Hand.A
Auf ähnliche Weise können Sie eine endliche Anzahl verschiedener Formen mit fester Größe codieren, um Sackgassen zu vermeiden und Ihren Automaten zu beschleunigen. Infolgedessen gibt es keinen "optimalen" kurzsichtigen Labyrinthlöser für einfach verbundene Labyrinthe, deren Ausgang an der Grenze liegt.
Der Trick funktioniert, wenn sich der Eingang im Labyrinth und der Ausgang auch an der Grenze befinden. Wenn sich der Ausgang jedoch im Labyrinth befindet, funktioniert dies nicht, da alle Standorte besucht werden müssen und in diesem Fall Ihr Kurzsichtigkeitslöser optimal ist.
Natürlich können Sie nicht denselben Trick anwenden, um nicht einfach verbundene Labyrinthe zu lösen (aber es sollte funktionieren, wenn es eine feste Obergrenze für die Größe jeder nicht verbundenen Komponente gibt).
quelle
Frage 1
Ich denke, Ihre Definition von besser ist zu streng in dem Sinne, dass endlich zu restriktiv ist (aber ich habe keine bessere Definition).
Wir bauen eine Familie von Labyrinthen . Jedes ist ein Korridor der Länge , der mit einer Rechtskurve endet. Das gleiche gilt für bzw. links. Wir können einen Wandler und , die die Teilmengen bzw. optimal lösen . Dann ist kein Wandler besser als oder .R i I L A R A L R L A R A LR=(Ri)i Ri i L AR AL R L AR AL
: Mit wir , das beweist, dass kein Löser besser ist als . Mein Punkt ist, dass ich denke, dass wir dasselbe für den linken Labyrinthlöser tun können, aber die Labyrinthe wären komplexer. R A R.AR R AR
Probabilistische Wandler können wahrscheinlich ausgeschlossen werden, da ein deterministischer Wandler auf diesen unendlichen Labyrinthsätzen schneller ist.
Frage 2 (dank der Diskussion mit OP )
Nein. (Quelle: dieses bahnbrechende Papier von Lothar Budach. Der Satz wird in der Zusammenfassung dieses Artikels von Frank Hoffmann deutlicher formuliert .)
quelle