Rush Hour - la Résolution du jeu

L'Heure De Pointe

si vous n'êtes pas familier avec elle, le jeu se compose d'une collection de voitures de différentes tailles, soit horizontalement ou verticalement, sur un NxM grille qui a une seule sortie.

Chaque voiture peut se déplacer vers l'avant/vers l'arrière dans les directions de l'ensemble, aussi longtemps que l'autre voiture n'est pas bloquant. Vous pouvez jamais changer la direction d'une voiture.

Il y en a un spécial voiture, habituellement, c'est le rouge. C'est dans la même ligne que la sortie est dans, et l'objectif du jeu est de trouver une série de mouvements (un mouvement de déplacement de la voiture N pas en arrière ou en avant) qui permettra à la voiture rouge pour sortir du labyrinthe.

J'ai essayé de réfléchir à la façon de résoudre ce problème par le calcul, et je peux vraiment pas penser à une bonne solution.

Je suis venu avec quelques-uns:

  1. De retours en arrière. C'est assez simple, Récursivité et un peu plus de la récursivité jusqu'à ce que vous trouver la réponse. Cependant, chaque voiture peut être déplacé un peu de façons différentes, et dans chaque état de jeu un peu de voitures peuvent être déplacés, et l'arborescence du jeu va être ÉNORME.
  2. Une sorte de contrainte algorithme qui permettra de prendre en compte ce qui doit être déplacé, et de travailler de manière récursive en quelque sorte. C'est une idée très approximative, mais c'est une idée.
  3. Graphiques? Le modèle du jeu des états sous forme de graphique et d'appliquer une sorte de variation sur un algorithme de coloration, à résoudre des dépendances? Encore une fois, c'est une idée très approximative.
  4. Un ami a proposé des algorithmes génétiques. C'est possible, mais pas facilement. Je ne peux pas penser à une bonne façon de faire une fonction d'évaluation, et sans que nous l'ayons rien.

Donc la question est - Comment créer un programme qui prend une grille et le véhicule de la disposition, et les sorties d'une série d'étapes nécessaires pour obtenir le rouge voiture?

Sous-questions:

  1. Trouver certains solution.
  2. Trouver un optimale solution minimale (nombre de coups)
  3. L'évaluation de la qualité d'un état actuel est

Exemple: Comment pouvez-vous déplacer les voitures dans ce cadre, de sorte que la voiture rouge peut "sortir" le labyrinthe jusqu'à la sortie sur la droite?

Rush Hour - la Résolution du jeu

(source: scienceblogs.com)

  • while(!win){selectRandomCar().moveRandomWay()};
  • C'est bogosolve!
  • J'ai adoré ce jeu quand j'étais gamin. Mon algorithme: Pousser les voitures de PLUS de la frontière ou de jeter des voitures qui bloquent la sortie du conseil. Je gagne.
  • Également un problème connexe est la preuve qu'généré de façon aléatoire une configuration de voitures est réellement solvables.
  • N'est-ce pas ce genre de problème adapté pour être exprimé dans le Prologue? Je ne suis pas expert dans le présent, donc c'est juste une supposition.
  • quel est le langage que l'API et est-il open source? 🙂
  • Ah bon temps bon temps....

InformationsquelleAutor Rubys | 2010-05-20