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 :

N plus courts chemin dans un graphe


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 28
    Points : 27
    Points
    27
    Par défaut N plus courts chemin dans un graphe
    Bonjour,

    Je suis à la recherche d'un algorithme parcourant un graphe orienté valué et permettant de me retourner les n plus courts chemin entre 2 points.

    Les algorithmes classique de recherches de plus court chemin tel Dijkstra ou Bellman ne m'apporte qu'un unique chemin.

    Quelqu'un a-t-il une idée pour réaliser ceci, ou bien sinon une idée pour un algo bourrin qui me calculerai l'intégralité des chemins du graphe?

    Merci par avance pour toute aide

  2. #2
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 49
    Points : 59
    Points
    59
    Par défaut
    je te propose la methode suivante :

    Soit G ton graphe,
    1- Tu lance un premier algorithme 'Dijkstra' classique. tu aurra comme resultat chemin constitué de x Arcs. tu sauvegarde cette liste (disons dans Larc(x) )

    2- tu fait une boucle de x fois. et à chaque iteration tu concidére ton graphe en enlevant un arc de la liste Larc(x), tu obtient un graphe G' tel que : G'=G-Larc[i].
    Si tu lance un 'Dijkstra' sur G' tu obtiendra le chemin le plus court ....
    3- au final tu doit trier les chemins trouvés, pour selectionner le nombre voulu.

    N! je croie que j'ai pas tres bien expliquer l'algo. mais l'idée est là

  3. #3
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Je trouve la solution de chebreg pas tres naturel... j'aurais plutot tendense a essayer d'adapter 'Dijkstra' pour lui permettre de faire ce que tu veux.

    Il faut en particulier regarder ce que fait dijkstra lorsque que tu as une egalité entre deux chemin, je me souviens plus tres bien mais il me semble qu'il oublie tout simplement un des deux chemins. Par exemple, si tu as un chemin de A vers B de meme coup que A vers B en passant par C, alors, il ne fait rien. Il suffirait simplement de se souvenir de ce chemin dans ta structure de donné. Ensuite, ca doit etre possible de recuperer tous les chemins egaux.

  4. #4
    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
    L'algorithme d'Eppstein résout ce problème

    http://www.ics.uci.edu/~eppstein/pubs/p-kpath.html

  5. #5
    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
    Avec Dijsktra, on ne garde pas que le chemin le plus court à chaque itération ? A la place, stocke les n plus courts chemins et travaille là-dessus. Pour moi, c'est une adaptation simple de Dijsktra, chercher les n plus courts chemins.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 28
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup à tous, en effet l'algorithme de Eppstein répond exactement à mes besoins, je vais voir si j'en trouve une bonne implémentation ou une que je pourrais transcrire sans trop de problème en Java.

    Sinon en effet une transformation de l'algo de Dijkstra peut-être possible d'après ce que je viens de trouver.

    Merci encore pour votre aide

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 28
    Points : 27
    Points
    27
    Par défaut
    Pour info si jamais le sujet pouvait intéresser quelqu'un, j'ai trouvé sur le site de l'INRIA un package Java contenant un algorithme de recherches de n plus courts chemins.

    http://www-sop.inria.fr/mascotte/mascopt/release/docs-1.2/mascoptLib-1.2/mascoptLib/algos/abstractalgos/KShortestPath.html
    et
    http://www-sop.inria.fr/mascotte/mascopt/

Discussions similaires

  1. Plus court chemin dans un graphe
    Par kader58 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 26/04/2015, 10h19
  2. Algorithme des K plus courts chemins dans un graphe dirigé
    Par geforce dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 23/01/2015, 15h07
  3. Calcul de plus court chemin dans un graphe
    Par Elmilouse dans le forum Prolog
    Réponses: 6
    Dernier message: 21/03/2010, 20h26
  4. Plus court chemin dans un graphe avec contraintes
    Par tomjr dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 30/12/2009, 12h36
  5. trouver le plus court chemin dans un graphe
    Par buggen25 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/08/2008, 17h34

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