Comment résolvez-vous le 15-puzzle avec A-Star ou l'algorithme de Dijkstra?
J'ai lu dans un de mes IA livres populaires des algorithmes (Étoiles, Dijkstra) pour la recherche de chemin dans la simulation ou de jeux est également utilisé pour résoudre le bien-connu "15-puzzle".
Quelqu'un peut-il me donner quelques conseils sur comment je pourrais réduire le 15-puzzle à un graphe de nœuds et d'arêtes pour que je puisse appliquer l'un de ces algorithmes?
Si je ont été de traiter chaque nœud dans le graphe que l'état d'une partie alors ne serait-ce pas l'arbre deviennent assez grandes? Ou est-ce juste la façon de le faire?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Une bonne heuristique pour Une Star avec le 15 puzzle est le nombre de places qui sont dans le mauvais emplacement. Parce que vous avez besoin d'au moins 1 déplacez le carré qui est de l'endroit, le nombre de carrés de place garantie d'être inférieur ou égal au nombre de coups nécessaires pour résoudre le puzzle, ce qui convient heuristique pour Une Étoile.
Une rapide recherche sur Google tourne quelques documents qui traitent de ce dans le détail: l'un sur En Parallèle Combinatoire De Rechercheet un sur Externe-Mémoire De Recherche Graphique
Règle générale, quand il s'agit de problèmes algorithmiques: quelqu'un a probablement fait avant vous, et publié leurs résultats.
C'est une mission pour les 8-puzzle problème parlé de l'utilisation de l'algorithme A* dans le détail, mais aussi assez simple:
http://www.cs.princeton.edu/courses/archive/spring09/cos226/assignments/8puzzle.html
Le graphique de la théorie façon de résoudre le problème est d'imaginer chaque configuration du conseil d'administration comme un sommet du graphe, puis utiliser une haleine de la première recherche avec l'élagage basé sur quelque chose comme la Distance de Manhattan du conseil d'administration de calculer un plus court chemin à partir de la configuration de départ à la solution.
Un problème avec cette approche est que pour toute
n x n
conseil oùn > 3
l'espace de jeu devient tellement grand qu'il n'est pas clair comment vous pouvez efficacement marquer la visités sommets. En d'autres termes, il n'existe aucun moyen évident d'évaluer si la configuration actuelle de la commission est identique à celle qui a déjà été découvert par le biais de traverser un autre chemin. Un autre problème est que le graphique de la taille augmente rapidementn
(c'est environ(n^2)!
) qu'il n'est pas adapté pour un brue-attaque de force que le nombre de chemins devient mathématiquement impossible à traverser.Ce papier par Ian Parberry En Temps Réel de l'Algorithme pour le
(n^2 − 1)
- Puzzle décrit un simple algorithme glouton qui iteritively arrive à une solution d'ici l'achèvement de la première ligne, la première colonne, puis la deuxième ligne... Il arrive à une solution presque immédiatement, toutefois, la solution est loin d'être optimale; essentiellement, il résout le problème de la manière dont un humain le ferait sans tirant parti de tout calcul musculaire.Ce problème est étroitement lié à celui de la résolution du Rubik's cube. Le graphique de jeu des états-elle trop grande pour résoudre par brue-d'œuvre, mais il est assez simple étape 7 de méthode qui peut être utilisée pour résoudre un cube dans environ 1 ~ 2 minutes par un agile de l'homme. Ce chemin est bien entendu non-optimale. En apprenant à reconnaître des modèles qui définissent les séquences de mouvements, la vitesse peut être ramené à 17 secondes. Toutefois, cet exploit par Jiri est un peu surhumain!
La méthode Parberry décrit se déplace d'une seule case à la fois; on imagine que l'algorithme pourrait être mieux mis en place par l'embauche de Jiri dextérité et le déplacement de plusieurs tuiles à la fois. Ce ne serait pas, comme Parberry prouve, de réduire la longueur du chemin de
n^3
mais il permettrait de réduire le coefficient de la pointe terme.Rappelez-vous qu'Un* recherche dans l'espace du problème avancer sur le chemin le plus probable à l'objectif défini par vos heurestic.
Que dans le pire des cas il va finir par avoir à l'inondation de remplir la totalité de l'espace du problème, ce qui tend à se produire quand il n'y a pas de réelle solution à votre problème.
Suffit d'utiliser le jeu de l'arbre. Rappelez-vous que l'arbre est une forme de graphe.
Dans votre cas, les feuilles de chaque nœud sera la position du jeu, après vous faites l'un des mouvements qui est disponible sur le nœud actuel.
Ici, vous allez http://www.heyes-jones.com/astar.html
Aussi. être conscient qu'avec la Star de l'algorithme, au moins, vous aurez besoin de trouver une heuristique admissible pour déterminer si la prochaine étape est la plus proche à la fin de l'itinéraire qu'une autre étape.