IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

chemin le plus court


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Points : 6
    Points
    6
    Par défaut chemin le plus court
    Bonjour tout le monde,

    En fait, je suis en pleine creation d'un labyrinthe, et j'aimerai bien connaitre une technique pour trouver le chemin le plus court.

    J'explique un peu comment est crée le labyrinthe :
    C'est un tableau de structure de deux dimensions.

    voici la structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedef struct{
            int d[4];	// une case pour une direction.
            }ts;
    chaque case de "d" correspond à un degrée de liberté de la pièce. On met à "0" si le chemin n'est pas possible dans cette direction, sinon "1".

    Si mon explication n'est pas très claire, je peux recommencer :o

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Non, ce n'est pas clair.

    Va voir du cote du forum Algorithmique, je pense que les gens seront plus aptes à t'aider là-bas.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Membre éclairé Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Points : 693
    Points
    693
    Par défaut
    C'est assez clair, c'est en effet une question d'algorithme.

    Je vois une solution pour trouver le chemin le plus court entre deux cases:
    Essayer tous les chemins possibles en comptant le nombre de cases et garder celui qui en a le moins.

  4. #4
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Il faut représenter ton labyrinthe sous la forme d'un graphe, puis, par exemple, chercher le chemin le plus court entre les deux sommets qui sont tes cases avec un algorithme comme Dijkstra.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  5. #5
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Je sais que chez Boost, il existe une fonction qui t'évitera de réécrire tout l'algo: http://www.boost.org/libs/graph/doc/...est_paths.html
    A+

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Merci de vos réponse. En fait, je fais un projet info pour l'école, et le problème, c'est que l'on a pas fait les graphes.

    Mon tableau à deux dimension, est-ce un graphe ? Ou dois-je le convertir en graphe ?
    Car dans une case, je peux avoir la direction droite autorisé, et dans la case à côté, la direction gauche interdite.
    J'ai fais un petit dessin pour que se soit plus compréhensible.
    Images attachées Images attachées  

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    ou sinon vous pouvez allez voir Mme Ru..o

  8. #8
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par fabetvince
    Mon tableau à deux dimension, est-ce un graphe ? Ou dois-je le convertir en graphe ?

    Ce qu'est un graphe est arbitraire. Un tableau peut tout à fait représenter un graphe. La question est après de voir si la gestion et l'utilisation de ton graphe sera facile. Mais de toute façon, ta question est plutôt une question algorithmique et il y a un forum pour ce genre de question.

    Résumons:

    - Oui ta structure de donnée peut fonctionner bien que ce sera plus difficile je pense
    - Non, on ne peut pas t'aider ici, tu n'as pas encore l'algorithme
    - Oui, on t'aidera avec le code lorsque tu auras un problème précis.

    Jc

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Est ce qu'en changeant mon tableau de structure( voir précédemment) de la façon suivante cela serai plus facil pour gérer les déplacement du perso dans le labyrinthe???

    Je pense agrandir le tableau, en ne mettant plus 4 cases pour les directions. Chaque case du tableau contiendra une couleur(ex noir=mur, blanc=chemin), j'ai regardé beaucoup de structure pour faire un labyrinthe, et je ne sais pas comment m'y prendre.

    Pourriez vous m'aider svp

  10. #10
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Comprendre ce qu'est un graphe est très simple. A partir de là, implémenter Dijkstra n'est pas trop compliqué (tant qu'on ne cherche pas à optimiser à fond). Dis-nous quel est ton niveau qu'on sache comment te le présenter.

    --
    Jedaï

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Quand on connait le plan du labyrinthe, on utilise en général cette méthode:
    http://math.berkeley.edu/~sethian/Mo...erobotics.html
    Ca consiste grosso modo à simuler la propagation d'une onde ou d'un liquide dans le labyrinth. C'est aussi comme ça que des fourmis retrouvent leur chemin dans un labyrinthe, grace aux féromones.
    L'auteur a juste corsé le problème en se promenant avec une échelle dans le labyrinth.

  12. #12
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Lorsqu'on cherche un plus court chemin en nombre d'arcs (ou de déplacements élémetaires dans le cas du labyrinthe), un parcours en largeur d'abord fait l'affaire: c'est plus simple et plus rapide que Dijkstra!

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Points : 223
    Points
    223
    Par défaut
    J'ai également eu à coder lors de mes études un labyrinthe, tu peux aussi faire un calcul du chemin le plus court pour trouver la sortie sans te soucier des obstacle et autre et mettre en place une heuristique (si je me souviens bien) pour trouver ensuite le chemin :

    Tu calcules sans cesse le plus court chemin, mais tu enregistre des position antérieure dans le labyrinthe, et en cas de blocage hop tu reviens en arrière et prend une autre route. Ca porte un nom ce procédé mais je m'en rapelle plus back-quelque chose il me semble.
    La posix attitude ...

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    backtracking, mais c'est plus du profondeur que tu fais que du largeur. Dans le parcours en largeur, tu n'as pas vraiment de backtracking à faire. Mais ça ne marche que si les arcs ont le même poids.

Discussions similaires

  1. Requete recursive - Graphe - Chemin le plus court
    Par nicottin dans le forum SQL
    Réponses: 7
    Dernier message: 08/11/2007, 00h33
  2. 2D C++ : Améliorer Recherche chemin le plus court
    Par Julien_C++ dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 04/11/2006, 13h58
  3. chemin le plus court
    Par fabetvince dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 01/06/2006, 00h14
  4. Trouver le chemin le plus court
    Par poly128 dans le forum Langage
    Réponses: 8
    Dernier message: 24/04/2006, 08h28
  5. algorithme de Ford (recherche chemin le plus court)
    Par abstraite dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/05/2005, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo