2010-07-27 3 views
2

Je travaille sur un projet que je dois traverser un labyrinthe en utilisant la règle de la main gauche et en fonction des intersections du programme vient je dois créer un noeud pour se connecter à un graphique que je vais ensuite déterminer le chemin le plus court. Le but est que le programme parcourt le labyrinthe puis ferme le programme et lit à partir d'un fichier qui contient le graphique et détermine le chemin le plus court vers la fin. ce que j'ai fait c'est que je peux traverser le labyrinthe en utilisant la règle de la main gauche. ce que je pense à faire est de créer un nœud quand je trouve l'intersection et là après chaque mouvement du programme j'augmente le coût de ce chemin par un. sur une note de côté avez-vous besoin d'avoir une matrice d'adjacence lorsque vous utilisez l'algorithme de dijkstra?chemin le plus court à travers un labyrinthe

+0

Vous pouvez utiliser une matrice d'adjacence ou une liste de tableaux (liste d'adjacence). Je ne sais pas ce que vous vouliez dire par la règle de gauche, mais je suppose que l'algorithme de dijkstra fera l'affaire. –

+0

Tous les labyrinthes ne peuvent pas être résolus par la règle de la main gauche. Thésée avait tort. – Borealid

+0

@Borealid: Tous les "labyrinthes parfaits" peuvent; Je suppose que c'est ce à quoi l'OP fait référence ... –

Répondre

2

Essayez quelque chose comme ça, il devrait fonctionner:

 
0 - create an empty "solution path" stack of location objects. 

1 - if current position is maze exit, return "solution path" stack. 

2 - wall in front? turn left and repeat 2, else continue to 3. 

3 - if current position is at top of "solution path" stack, 
     pop it off of the stack 
     else push it onto the stack 

4 - move forward. 

Lorsque vous vérifiez le haut de la pile pour la position actuelle, vous pourriez avoir besoin de vérifier l'élément juste avant la toute dernière, depuis le dernier sera la position que vous venez de quitter.

+0

wow c'est en fait une bonne idée que vous n'avez pas besoin d'utiliser un graphique pour trouver le chemin le plus court. – Zieklecknerizer

+0

Étape 2 n'est pas tout à fait raison, devrait tourner à gauche, même si vous pouvez aller tout droit ... tourner à gauche ou aller à droite ou à droite et pousser, ou revenir et pop ... dois courir, pas le temps de le mettre à jour :) –

+0

oui l'idée que vous avez des travaux, malheureusement, je dois trouver le chemin le plus court en utilisant des graphiques et algorithmes diijkstas ... des idées comment faire que je suis un peu à perte. J'ai pensé que peut-être je pourrais mettre en place le graphique en ajoutant un bord chaque fois que le programme arrive à une intersection. puis chaque fois que vous vous déplacez entre là et une autre intersection. mais ça ne marche pas ... peut-être que je ne l'implémente pas correctement ou quelque chose. (pas très habile graphiquement haha) ill ajouter du code pour montrer ce que je fais si je fais des progrès! – Zieklecknerizer

Questions connexes