Estaba jugando con la demostración de Google Blocky's Maze , y recordé la vieja regla de que si quieres resolver un laberinto, solo mantén la mano izquierda en la pared. Esto funciona para cualquier laberinto conectado de forma simple y puede implementarse mediante un transductor finito.
Deje que nuestro robot sea representado por un transductor con las siguientes acciones y observables:
- Acciones: avance ( ), gire a la izquierda ( ), gire a la derecha ( )
- Observables: muro adelante ( ), sin muro adelante ( )
Luego podemos construir el solucionador de laberintos izquierdo como (perdón por mi dibujo perezoso):
Donde ver un observable nos hará seguir el borde apropiado fuera del estado mientras ejecutamos la acción asociada con ese borde. Este autómata resolverá todos los laberintos conectados de forma simple, aunque puede llevar su tiempo siguiendo callejones sin salida. Llamamos a otro autómata mejor que A si:
da estrictamente más pasos solo en un número finito de laberintos, y
toma estrictamente menos pasos (en promedio; para variantes probabilísticas) en un número infinito de laberintos.
Mis dos preguntas:
¿Existe un autómata finito mejor que el que se muestra arriba? ¿Qué pasa si permitimos transductores probabilísticos?
¿Existe un autómata finito para resolver laberintos que no están necesariamente simplemente conectados?