Je me moquais de la démo de Google Blocky Maze et je me souvenais de l'ancienne règle selon laquelle si vous voulez résoudre un labyrinthe, gardez simplement votre main gauche contre le mur. Cela fonctionne pour tout labyrinthe simple connecté et peut être mis en œuvre par un transducteur fini.
Que notre robot soit représenté par un transducteur avec les actions et observables suivants:
- Actions: avancer ( ), tourner à gauche ( ), tourner à droite ( )
- Observables: mur devant ( ), pas de mur devant ( )
Ensuite, nous pouvons construire le solveur de labyrinthe de gauche comme (pardonnez mon dessin paresseux):
Où voir un observable nous fera suivre le bord approprié hors de l'état tout en exécutant l'action associée à ce bord. Cet automate résoudra tous les labyrinthes simplement connectés, bien que cela puisse prendre son temps après les impasses. On appelle un autre automate meilleur que A si:
prend strictement plus d'étapes que sur un nombre fini de labyrinthes, et
prend strictement moins d'étapes (en moyenne; pour les variantes probabilistes) sur un nombre infini de labyrinthes.
Mes deux questions:
Existe-t-il un automate fini meilleur que celui dessiné ci-dessus? Et si nous autorisons les transducteurs probabilistes?
Existe-t-il un automate fini pour résoudre des labyrinthes qui ne sont pas nécessairement simplement connectés?
la source
Réponses:
Si j'ai bien compris la question, je pense que vous pouvez appliquer une astuce d'accélération pour obtenir des automates plus rapides sur un nombre infini de labyrinthes (à condition que la sortie soit placée sur l'une des frontières): vous pouvez simplement utiliser les états internes pour stocker un nombre fini d'étapes et reconnaître les impasses comme celle de la figure:
De la même manière, vous pouvez encoder un nombre fini de formes de tailles fixes différentes pour éviter les impasses et accélérer votre automate. En conséquence, il n'y a pas de solutionneur de labyrinthe myope "optimal" pour les labyrinthes simplement connectés avec la sortie placée sur la frontière.
L'astuce fonctionne si l'entrée est placée à l'intérieur du labyrinthe et la sortie à la frontière aussi; mais si la sortie est placée à l'intérieur du labyrinthe, cela ne fonctionne pas car tous les emplacements doivent être visités et dans ce cas, votre solveur myope est optimal.
Évidemment, vous ne pouvez pas appliquer la même astuce pour résoudre des labyrinthes non simplement connectés (mais cela devrait fonctionner s'il y a une limite supérieure fixe sur la taille de chaque composant non connecté).
la source
question 1
Je pense que votre définition du mieux est trop stricte dans le sens où le fini est trop restrictif (mais je n'ai pas de meilleure définition).
Les transducteurs probabilistes peuvent probablement être exclus car un transducteur déterministe sera plus rapide sur ces jeux infinis de labyrinthes.
Question 2 (grâce à la discussion avec OP )
Non. (Source: cet article révolutionnaire de Lothar Budach. Le théorème est plus clairement énoncé dans le résumé de cet article de Frank Hoffmann.)
la source