-
Chemin dans un tableau
Bonjour,
Pourriez vous m'aider
je veux faire une programme qui ressemble à la théorie des graphes.
le programme que je veux faire localise le 3 le plus proche du 2 en passons que par le chemin le plus court des 1 adjacents
je donne un example :
http://nsa34.casimages.com/img/2013/...2139954429.png
la on compte sur ce chemin qu'on a passé par 9 cases adjacentes contenant des 1
voici une autre solution
http://nsa34.casimages.com/img/2013/...3220724978.png
on remarque la qu'on passe par 8 case de 1
il y a aussi d'autre solution comme
http://nsa34.casimages.com/img/2013/...2113106751.png
passage par 13 cases de 1
et aussi
http://nsa33.casimages.com/img/2013/...2151997817.png
et en dernier passage par 11 cases de 1
et bien sûr il y a d'autres solutions inutiles que je n'ai pas voulu détailler.
donc la solution que je veux est
http://nsa34.casimages.com/img/2013/...3601409201.png
j'espère que j'ai été le plus clair possible.
-
Koa,
Étant donné que la question est "aidez svp a terminer mon programme", et que la règle sur ce forum est d'aider, pas de donner les programmes complets, si tu commençais par nous montrer ce que tu as fait, et nous expliquer ce qui te bloque ?
-
En réalité mon programme sert a commander la trajectoire d'un bot
tout ce que j'ai fait pour l'instant je l'ai commandé à bouger en détectant les 0 et à aller vers le 3 en parcourant les 1.
Si je dis que le 3 est l'inconnue, le 1 est le passage libre, le 2 la position du bot, le 4 position de départ et le 0 c'est les impasses.
Mon bot bouge d'une façon aveugle dans cette matrice C.
Mais il arrive qu'il se coince entre trois 0 comme je l'ai montré dans les images.
C'est le problème : il doit retourner vers le 3 le plus proche (quand je dis le plus proche ça veut dire passer par le chemin le plus court entre les 1)
donc le problème en réalité est de détecter le meilleur3.
Désolé pour l'embrouille causée.
-
Bonjour !
Et en enregistrant les trajectoires ?!
Il faudrait par exemple représenter la direction par une valeur :
haut = 1, droite = 2, bas = 3, gauche = 4, arrivée = 0
En enregistrant tout ça dans un vecteur, la distance la plus courte sera le vecteur le moins grand.
-
Salut
Si tu veux faire ça proprement, il te faut appliquer l'algorithme de Dikstra ou A*. C'est relativement simple dans ton cas car la topologie de ton graphe est triviale.
-
Oui c'est vrai
Il faudrait que je parcoure tous les chemins possibles vers tous les trois
et là ça va être plein de vecteurs.
Je n'ai pas vraiment su comment ordonner tous ça.
Autre chose : il se peut qu'on tombe dans une boucle infinie et le vecteur sera infini.
En tout cas merci pour l'idée
-
Si tu appliques les algorithmes que je t'ai donnés, tu n'auras pas de problèmes de boucles infinies.
-
Joa,
Désolé peut-être, mais ta réponse n'en est pas une à ma demande : montre-nous ce que tu as déjà fait, et explique-nous ce qui te bloque.
Là, tu ne fais que développer ce que tu veux faire, et qu'on avait compris. La destination finale du logiciel importe peut, ça ne fait qu'augmenter la taille de ce qu'il faut lire, et qui n'amène rien de plus.
-
Désolé mais c'est résolu merci quand même.