Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉSOLUTION D'UN LABYRINTHE (MÉTHODE RÉCURSIVE) - SOLVEUR RÉCURSIF GÉNÉRAL


Information sur la source

Catégorie :Divers Classé sous : labyrinthe, récursivité, récursif, solveur, pile Niveau : Initié Date de création : 04/03/2006 Date de mise à jour : 04/03/2006 12:38:14 Vu / téléchargé: 5 017 / 707

Note :
9 / 10 - par 4 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Ce programme permet de trouver la sortie d'un labyrinthe quelconque, mais surtout, il montre comment mettre en oeuvre une méthode de résolution récursive, qui peut être utilisée pour la résolution d'un très grand nombre de problèmes.
Il peut être utilisé pour résoudre des problèmes comme le "compte est bon", des problèmes de programmation avec contrainte, faire de l'optimisation, etc.
La partie graphique illustre l'utilisation d'une pile simplifiée pour la sauvegarde dun ou plusieurs résultats intermédiaires.
 

Conclusion

Testé, commenté, modualaire, ce programme est simple à utiliser. Si vous comprenez comment fonctionne la fonction findLaby(), alors vous pouvez utiliser ce programme comme base pour la résolution de centaines d'autres problèmes similaires.

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • frmlaby.frmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier12 128 octets
  • laby.labTélécharger ce fichier [Réservé aux membres club]1 302 octets
  • laby.vbpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier779 octets
  • laby.vbwTélécharger ce fichier [Réservé aux membres club]Voir ce fichier82 octets
  • laby10.labTélécharger ce fichier [Réservé aux membres club]1 682 octets
  • laby2.labTélécharger ce fichier [Réservé aux membres club]594 octets
  • laby3.labTélécharger ce fichier [Réservé aux membres club]999 octets
  • laby4.labTélécharger ce fichier [Réservé aux membres club]644 octets
  • laby5.labTélécharger ce fichier [Réservé aux membres club]1 215 octets
  • laby6.labTélécharger ce fichier [Réservé aux membres club]1 298 octets
  • laby8.labTélécharger ce fichier [Réservé aux membres club]156 octets
  • laby9.labTélécharger ce fichier [Réservé aux membres club]7 382 octets
  • modlaby.basTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 848 octets

Télécharger le zip

Historique

04 mars 2006 12:38:14 :
Une petite erreur dans l'utilisation de la variable de temporisation.

Commentaires et avis

signaler à un administrateur
Commentaire de Willi le 04/03/2006 12:49:28 administrateur CS

Source instructive :)
Bonne continuation 8/10

signaler à un administrateur
Commentaire de Marsu le 05/03/2006 13:31:34

Moyen, je ne comprends pas pourquoi ne pas chercher le chemin le plus court, ce qui est a mon avis pas vraiment plus long, et permet aussi de traiter d'autres problèmes.

signaler à un administrateur
Commentaire de Willi le 05/03/2006 13:53:02 administrateur CS

Bonne remarque Marsu, mais le but n'est pas de trouver le chemin le plus court ici.

signaler à un administrateur
Commentaire de jean_marc_n2 le 05/03/2006 14:04:01

Hello,

tu n'as visiblement pas lu ou pas compris l'algorithme. Je penche pour la seconde solution. Ce programme permet bien évidemment de trouver le chemin le plus court (il suffit de regarder l'indice de pile à chauqe fois qu'on atteint un "B" et de stocker ce nouveau chemin si il est plus court que celui déjà sauvé).

Relis le au calme, essaie de bien comprendre comment cela fonctionne. Ca demande une petite gymnastique cérébrale ;-)

Qui plus est, il existe d'autres méthodes de résolution de labyrinthes: c'est un problème général de parcours de graphes. Tout a été dit et écrit par Dijkstra sur le sujet. On trouve aussi de très bonnes implémentations dans Knuth (TAOCP, Volume 3, 'Sorting and Searching').

signaler à un administrateur
Commentaire de Willi le 05/03/2006 14:12:53 administrateur CS

Et moi qui croyais avoir tout compris je me suis trompé également :)

signaler à un administrateur
Commentaire de jean_marc_n2 le 05/03/2006 14:23:48

Merci willi pour tes commentaires :-) C'est vrai que ce programme n'est pas en soi destiné à trouver le chemin le plus court. Il est destiné à trouver une solution par recherche récursive. Mais c'est vrai aussi qu'on peut le modifier (assez) aisément pour trouver des minima (donc en queque sorte trouver les chemins les plus courts). Bien sur, un tel algorithme modifé sera TRES inefficace dans le cas présent puisque comme je le disais, il y a d'autres algorithmes qui sont fait pour ça (par exemple l'algorithme A* de Dijkstra). Salut et encore merci pour tes sympathiques commentaires :-)

signaler à un administrateur
Commentaire de guyvdv le 25/03/2006 17:50:00

Bonjour Tout lemonde
Je debut dans la recursion, j'avai trouvé sur e a http://personal.vsnl.com/erwin/connect4.htm
un tut de recursion, mais le connect (4 sur une ligne? ) de fonctionne pas chez moi.(Commenté en hollandais alors illisible pour vous).
Il y a qq qui peu me donner un tuyo pour comprendre un peut la recursion.

le script de jean-marc est claire mais comment l'emploier pour 4/1 ligne et plus tard sudoku hihihi

Le nom Dijkstr ( hollandais) , ou je trouve ce qu'il a ecris??
Merci de m'aider un peut
A+
Guy van der Velden

signaler à un administrateur
Commentaire de jean_marc_n2 le 26/03/2006 12:03:18

Hello Guy, tu trouveras de très nombreuses références à Dijkstra sur le net, tu peux tout simplement entrer "Dijkstra" dans Google, tu auras déjà beaucoup de liens.
Pour la récursivité, il existe des centaines de références sur le net, tu peux commencer par la par exemple: http://www.chambily.com/recursivite/

Sur ce coup la, Google est ton ami, tu trouveras tout ce qu'il te faut. Ensuite, ayant compris les principes sous-jacents, utiliser et adapter mon programme devrait être assez simple pour résoudre tes cas particuliers (sudoku, etc).

signaler à un administrateur
Commentaire de guyvdv le 26/03/2006 12:07:53

merci jean-marc,
J'ai deja beaucoup cherche sur google, et beaucoup trouve
Mais le mot recursivite et dijkstra pas encore essayer
Merci et je te tiens au courant

A+
Guy van der Velden

signaler à un administrateur
Commentaire de poldere le 31/03/2006 10:32:10

Bonjour, je voudrais savoir si on peut utiliser ta source en l'adaptant pour le déplacemet d'un robot ? Création automatique ou manuel d'un labyrinthe correspondant à des pièces d'une maison puis déplacement à partir de cette base. Merci

signaler à un administrateur
Commentaire de jean_marc_n2 le 31/03/2006 19:37:33

Hello, ça dépend de ce que tu veux faire. Si le robot doit pouvoir trouver un ou plusieurs objets dans la maison, alors on peut l'utiliser. Si le robot doit passer par tous les endroits de la maison, on peut aussi l'utiliser. Si le robot doit pouvoir trouver le chemin le plus court pour se rendre à un endroit donné, alors cet algorithme peut être utilisé, au prix de quelques modifications, mais il n'est pas fait pour ça. Il existe des algorithmes plus efficaces pour la détermination des chemins les plus courts, avec des contraintes.

Pour la majorité des cas, oui cet algorithme est tout à fait adéquat pour déplacer un robot dans une maison.

signaler à un administrateur
Commentaire de poldere le 31/03/2006 22:22:03

Merci pour la réponse et du peu que je connaisse en VB et le peu que j'ai pu voir du programme ; il est vrai que lorsqu'on enlève les obstacles on se rend compte que la recherche de chemin fait un genre " serpent ". Il serait stupide que le robot fasse le même chemin avant d'arrivé au but lol. Je vais fair une recherche avec " djisktra " pour trouver quelque chose en visuak basic à mon niveau basique.
Merci

signaler à un administrateur
Commentaire de pekch le 25/06/2006 15:46:18

mais ce n'est pas un algo de trajectoire, poldere!? c'est de la résolution de lab. c pas pareil... enfin je tuche pas des masses sur le sujet mais je crois que ca n'a rien a voir, dans la mesur ou dans un algo de trajectoire on connait déjà les chemins possibles, et on teste le plus court...

signaler à un administrateur
Commentaire de poldere le 25/06/2006 17:17:17

Ok merci. Je voulais partir de 3 cas différents :
1 : On connait le périmètre et les obstacles d'avance > on cherche juste le chemin le plus court
2 : Obstacles aléatoires dans un périmètre connu > calcul de contournement d'obstacle et re chemin le plus court.
3 : territoire inconnu > découverte et mémorisation du périmètre et des obstacles fixes.
4,5 : territoire inconnu et obstacles mouvants ( comme du sable par exemple lol ).
voilà en gros ce que je cherche à réaliser doucement avec le peu de connaissance que j'ai. Alors je cherche et merci à ceux qui ont mis des codes qui m'ont et m'auront aidé à progresser.
Merci à tous

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Utilisation du solveur d'excel dans visual basic 6 [ par Manu ] Bonjour à tous, J'ai un petit problème que, je suis sûr, vous pourrez m'aider à résoudre.JE cherche à utiliser le olveur d'excel dans visual basic 6.E Solveur d'excel et VB6 [ par Manu ] Bonjour à tous, J'ai un petit problème que, je suis sûr, vous pourrez m'aider à résoudre.JE cherche à utiliser le olveur d'excel dans visual basic 6.E solveur [ par Alpha ] Quelqu'un saurait il m'expliquer le principe du solveur d'excel???j'aurais besoin d'une fonction qui fasse la meme chose dans un prog VB. Au secours ! Pb de pile qui saute :) [ par Alexxx ] J'ai fait un script qui boucle sur lui même et qui teste la présence d'un fichier en VBS. Le test se fait toutes les 10 secondes. Tout marche correcte La pile VB [ par shervy ] Existe-t-il un moyen de gérer la pile mémoire de VB ou un moyen de l'augmenter (paramètre de compilation ou autre) ???Merci de votre aide. [REQ] Générer automatiquement une pile d'adresse IP dans un listbox. [ par Alextophi ] bonjourJe ne sais pas comment faire pour générer automatiquement une pile d'adresse IP dans un listbox.Avez-vous une idée ?ex: de "10.104.36.1" à "10 [REQ] Générer automatiquement une pile d'adresse IP dans un listbox. [ par Alextophi ] bonjourJe ne sais pas comment faire pour générer automatiquement une pile d'adresse IP dans un listbox.Avez-vous une idée ?ex: de "10.104.36.1" à "10 récursivité en vb [ par fouesoft ] salut,je cherche à programme la fonction factorielle en récursif ... comment faire pour la condition d'arrêt en vbfouesoft Pb de pile insuffisante [ par toto1980 ] J'ai menu qui s'affiche avec un click droit si je click droit puis click gauche ailleurs, j'ai l'erreur 28 " Espace pile insuffisant"Voici mon code:da Pb de pile insuffisante [ par toto1980 ] J'ai menu qui s'affiche avec un click droit si je click droit puis click gauche ailleurs, j'ai l'erreur 28 " Espace pile insuffisant"Voici mon code:da


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 2,293 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.