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 :

Recherche de chemin le plus court


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 118
    Par défaut Recherche de chemin le plus court
    Bonjour,

    Je planche actuellement sur un projet qui me pose des problèmes de modélisation et/ou de performances.

    Je m'explique :

    J'ai un réseau d'aiguillages reliés entre eux par des voies. Les voies sont en sens unique et ont une longueur avec une vitesse (je considère que l'on est toujours à la vitesse maxi).
    Il peut y avoir plusieurs voies entre deux même aiguillages (une voie lente et une rapide par ex). Il peut aussi y avoir une voie qui part et revient sur le même aiguillage (un circuit touristique par exemple). Il peut encore y avoir qu'une seule voie qui arrive et une seule qui part sur un aiguillage (qui n'en est pas un dans ce cas) c'est alors juste un point de passage.
    Mon nombre d'aiguillages et de voies n'est pas démentiel, mais est suffisamment conséquent pour générer pas mal de chemins possibles. Mon cas d'exemple comporte 32 aiguillages et 60 voies.

    Il existe dans ce réseau une position de départ et une position d'arrivée.

    Mon problème est : je suis dans sur un aiguillage quelconque, je souhaite atteindre la position d'arrivée tout en passant par certaines voies imposées (par exemple je veux que le train visite la voie lente pour le paysage) et en passant par le chemin le plus court en temps. Le calcul pour savoir quelle voie je dois emprunter à un aiguillage donné doit être vraiment rapide (disons que je dispose de 200ms environ).
    Difficulté supplémentaire, à cause d'erreurs d'aiguillages précédentes, un train peut se retrouver sur un aiguillage qu'il n'aurait pas du emprunter s'il avait suivi son chemin normal. Il faut alors tenter de le ramener sur le bon chemin si c'est possible.

    Tout est fixe : le nombre d'aiguillages, les voies, leur longueur et leur vitesse.
    Seule les voies imposées dépendent du train.


    J'ai commencé par modéliser tout cela par un graphe avec les aiguillages en sommet et les voies en arêtes. Cela donne environ 1.2millions de chemins depuis n'importe quel aiguillage du réseau vers la position d'arrivée. Le nombre de possibilités est trop grand car je dois trouver le meilleur chemin parmi ceux qui passent par toutes les voies imposées.

    J'ai alors tenté de modéliser dans le sens inverse : les voies sont les sommets et les aiguillages sont les arêtes. Mais, là encore, je ne vois pas comment trouver rapidement une solution.

    Ma question est : la modélisation par un graphe est elle la plus adaptée à mon cas de figure et si oui, avez vous des suggestions pour m'aiguiller (c'est le cas de le dire) vers un problème qui ressemblerait au mien ?
    D'autre part, existe t il des moyens très rapides pour calculer le chemin le plus court avec des étapes. Je rappelle que mon graphe initial comporte des boucles, des cycles et est orienté.


    Merci pour votre aide !

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Par défaut
    A priori c'est un classique A* search algorithm. Tu pourras éventuellement trouver des implémentations dans quasiment tous les langages : il a fait ses preuves

  3. #3
    Membre extrêmement actif
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Billets dans le blog
    1
    Par défaut
    Sinon, mais je suis pas sûr que ça soit vraiment adapté, il y a les algorithme génétique aussi.

    Recherche annexe : Problème du voyageur de commerce
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 118
    Par défaut
    Merci pour vos réponses !

    Je ne croispas que l'algo A* soit adapté car il cherche un chemin approximatif et sur un plan qui ne comporte pas de voies (on peut passer presque partout si j'ai bien compris)

    D'autre part, le voyageur de commerce ne s'applique que si tu ne passes qu'une et une seule fois sur les sommets. Or dans mon cas, il est possible de passer plus d'une fois par un aiguillage pour rejoindre la sortie. Il me semble donc que ce n'est pas tout à fait la même chose.

    Je reste néanmoins ouvert à une explication qui me montrerai la voie

    a+

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 54
    Par défaut
    A* peut tout à fait marcher pour les graphes Néanmoins il demande une heuristique qui dépend de ce que tu veux obtenir.

    Si tu veux vraiment le plus court dans ton graphe : Dijkstra est fait pour ça. Il est moins efficace que A* (en running time) mais te retourne le meilleur chemin.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 118
    Par défaut
    Citation Envoyé par Vakhyw Voir le message
    A* peut tout à fait marcher pour les graphes Néanmoins il demande une heuristique qui dépend de ce que tu veux obtenir.

    Si tu veux vraiment le plus court dans ton graphe : Dijkstra est fait pour ça. Il est moins efficace que A* (en running time) mais te retourne le meilleur chemin.
    J'ai effectivement regardé Dijkstra, mais deux choses ne collent pas si j'ai bien compris :
    - c'est un algo pour un graphe sans boucle et sans cycle (j'ai les deux)
    - y a t il une astuce ou une méthode pour calculer le chemin avec des étapes.

    Voila, je vais toutefois continuer a étudier cet algo pour voir s'il s'adapte.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recherche du chemin le plus court entre 2 points
    Par ram-0000 dans le forum Boost
    Réponses: 4
    Dernier message: 31/03/2009, 00h22
  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. Trouver le chemin le plus court
    Par poly128 dans le forum Langage
    Réponses: 8
    Dernier message: 24/04/2006, 08h28
  4. chemin le plus court
    Par fabetvince dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 21/04/2006, 13h38
  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