Solveur de labyrinthe myope optimal


10

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):

transducteur pour résoudre le labyrinthe

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:B A

  1. prend strictement plus d'étapes que sur un nombre fini de labyrinthes, etB

  2. prend strictement moins d'étapes (en moyenne; pour les variantes probabilistes) sur un nombre infini de labyrinthes.B

Mes deux questions:

  1. Existe-t-il un automate fini meilleur que celui dessiné ci-dessus? Et si nous autorisons les transducteurs probabilistes?

  2. Existe-t-il un automate fini pour résoudre des labyrinthes qui ne sont pas nécessairement simplement connectés?


@jmad et moi avons eu une discussion assez fructueuse dans le chat sur cette question. Si vous pensez à la question (en particulier les définitions de mieux que ), je vous recommande de consulter la transcription.
Artem Kaznatcheev

Je ne vois pas comment cette question se rapporte à l'IA (en particulier nos agents pour ne pas changer leur comportement compte tenu des données d'instance), mais je ne suis pas un expert dans ce domaine.
Raphael

3
La résolution de labyrinthes @Raphael et la recherche de parcours (de l'examen de BFS, DFS, à A *, et sur-wards) sont un programme de base dans un cours d'introduction à l'IA. Je suis d'accord, en tant qu'intelligence, ce n'est pas particulièrement excitant, mais si l'IA m'a appris quelque chose: la plupart de l'IA n'est qu'un problème de recherche.
Artem Kaznatcheev

Réponses:


6

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:

entrez la description de l'image ici

A

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é).


C'est une astuce intéressante pour le cas de l'entrée-sortie sur la frontière (qui est une sous-classe de labyrinthes simplement connectés). Cela montre que dans ce cas restreint, l'ordre que j'ai défini n'a pas d'éléments minimum. Je ne pense pas que cela puisse être généralisé à tous les labyrinthes simplement connectés (ce qui est le jeu de gauche suivant).
Artem Kaznatcheev

@ArtemKaznatcheev: Je pense que l'astuce fonctionne sur les labyrinthes avec entrée à l'intérieur du labyrinthe et sortie sur la frontière aussi. De plus, il fonctionne sur (infiniment de) labyrinthes dans lesquels il existe un sous-labyrinthe comme celui de la figure). Je vais modifier la question pour clarifier ce point.
Vor

k

4k1

5

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).

R=(Ri)iRiiLARALRLARAL

ARRAR

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.)


oui, nous aurions besoin de définir des classes d'équivalence sur les labyrinthes sous des transformations standard (comme les rotations et les réflexions) pour rendre le mur gauche et droit suivant l'équivalent. Malheureusement, votre section de question 1 ne répond pas à ma première question . Vous montrez qu'il y a des solveurs incomparables (dans l'ordre `` meilleur que '') (comme les gauchers et les droitiers si nous ne faisons pas d'hypothèses de symétrie) mais cela ne prouve pas qu'il n'y en a pas un qui soit mieux que la main gauche.
Artem Kaznatcheev le

ABABLRL R A A L L ARLLRAALLA

@ArtemKaznatcheev: oui, je sais que cela ne répond pas à la question, j'aurais dû être plus clair. Mon point est que je pense que nous pourrions appliquer cela à la LH mais aussi que est trop sensible par rapport à ce genre d'ensembles facilement infinis. (Je pense que seulement si est très similaire à (un sous-ensemble de) )A B B AABBA
jmad

La définition alternative à laquelle je peux penser est de demander que les mauvais exemples soient peu nombreux (au lieu d'être finis); polynôme ou plus petit (peut-être log?) nombre de mauvais exemples et plusieurs: super-polynôme / nombre exponentiel de bons exemples. Mais je pensais en fait que c'était encore plus restrictif, car le doit surpasser le sur BEAUCOUP d'exemples. BAB
Artem Kaznatcheev

@ArtemKaznatcheev: vous pourriez faire quelque chose qui dépend de la taille du labyrinthe (quelque chose comme mais c'est à la fois discutable et non pratique). Nous pouvons continuer sur le chat . #{A(M)<B(M)|M|n}/#{M|M|n}=o(1)
jmad
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.