RECHERCHE DE CHEMIN (RECURSIVITÉ ET BACKTRACKING)

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 - 20 avril 2006 à 17:28
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 - 9 mai 2006 à 22:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37160-recherche-de-chemin-recursivite-et-backtracking

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
9 mai 2006 à 22:46
Pourquoi ne pas chercher le plus court chemin?
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
21 avril 2006 à 18:13
Oui bon enfin mon chemin n'est pas rendu comme je l'avais fait lol

Soit fait pas attention à ma question lol
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
21 avril 2006 à 16:21
J'ai bine compris ce que tu veux dire, mais je ne sais pas si c'est exactement ce que je voulais dire lol, exemple :

_
| ____
|___| |
| _
|___| |
|

Ton algorithme pourrait il suivre ce chemin ? c'est à dire remonter pour trouver le chemin. Tu as peut etre répondu à ma question ici plus haut mais comme faut toujours tout me répeter 2 fois, je serai fixé ainsi lol
manta7 Messages postés 105 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 13 décembre 2008
21 avril 2006 à 07:51
Salut, j'ai bien compris ce que tu as essayé de faire et ce n'est pas mal du tout. Quand a ta question de savoir si mon algo est capable de remonter, je réponds oui, c'esr le systeme du backtracking, si par exemple le dernier coup joué est a droite il va tester en haut, en bas et a gauche puis va remonter (c'est a dire revenir a l'appel de la fonction ) et réaliser un chemin différent. Voila a+ ;)
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
20 avril 2006 à 21:43
Salut,

Tu as réussi à développer quelque chose d'une manière que je n'ai pas su réaliser. J'ai été confronté à ce problème un moment et j'ai pensé à le faire avec de la récursivité et... comme je trouve que cette approche est un peu floue et bien j'ai rennoncé à cette manière qui semblait la plus logique et j'ai pensé à un autre algorithme. Il vaut ce qu'il vaut, il n'est sans doute pas meilleur que le tiens, mais je vais en donner l'idée pour ceux qui aurait comme moi, du mal avec la recursivité.

En fait, mon algorithme recopie le tableau initial dans un autre tableau (ca ce n'est pas obligatoire si dans le premier tableau il n'y a que deux choix différent : chemin libre, chemin non libre). Si ce n'est pas le cas il recopie le tableau en simplifiant de cette manière, autrement dit si l'élément est un arbre une pierre ou autre chose qui bloque le passage il met 0 sinon il met 1. On se retrouve avec un tableau binaire. Ensuite je considère que les chemins possibles partent d'un point et ne peux que descendre vers 3 des points situés en dessous (celui directement en dessous, et ceux à gauche et à droite de celui directement en dessous).

Il parcourt alors tout le tableau et pour chaque élément il regarde si au moins un des 3 éléments de passage est libre, si c'est le cas il ne fait rien, si ce n'est pas le cas il transforme l'élement en 0 car cela voudra dire que le passage est impossible par ce point. On vérifie tout les lignes sauf la dernière, ce n'est pas utile. Le parcours se fait de bas en haut.

Une fois ce passage terminé, alors il suffit de prendre un point de départ et à chaque fois on choisit un de ces points en dessous, il est alors sur et certain que si un chemin existe ce point en fera partie.

Maintenant, je n'ai pas regardé à fond ton code, donc je ne sais pas si ton algorithme est capable de remonter dans le tableau pour faire un détour à fin d'arriver au sommet. Le mien ne l'est pas ;)
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
20 avril 2006 à 17:28
Ah décidemment ;)
J'suis entrain de faire ce genre de truc ;)
Enfin vous verrez quand j'aurais fini ;)
Rejoignez-nous