Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1831 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Boost dijkstra : recuperer l'intégralité du chemin

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Boost dijkstra : recuperer l'intégralité du chemin

n°2155702
aiseant
Posté le 05-09-2012 à 15:33:29  profilanswer
 

Hello world
 
Je bute sur un truc avec l'utilisation de l'implé de Dijkstra par boost (voir l'exemple http://www.boost.org/doc/libs/1_51 [...] ample.cpp)
 
En gros, une fois que j'ai utilisé :
dijkstra_shortest_paths(g, s, &p[0], &d[0], weightmap, indexmap, std::less<int>(), closed_plus<int>(), (std::numeric_limits<int>::max)(), 0,default_dijkstra_visitor());
 
J'ai les distances du plus court chemin entre mon nœud d'origine et chaque nœud, ça, d'accord.
 
Moi ce que j'aimerai, c'est également avoir tous les nœuds par lequel on est passé lors de ce plus court chemin. Je suppose que ce doit être faisable, c'est quand même un usage de base, mais j'arrive pas à trouver des infos là dessus
 
Merci d'avance pour votre aide là dessus
 
En fait, l'idée c'est que certains nœuds de mon graphe sont spéciaux. J'ai besoin de connaitre les chemins vers les spéciaux voisins ; soit, s'il y a un spécial sur le chemin parcouru, on s'arrête là et on ne considère plus la suite du chemin. Pour cela, j'ai donc besoin de connaitre les noeuds parcourus par le chemin.
 
+
Aiseant


Message édité par aiseant le 05-09-2012 à 15:38:55
mood
Publicité
Posté le 05-09-2012 à 15:33:29  profilanswer
 

n°2155729
Terminapor
I'll see you rise.
Posté le 05-09-2012 à 17:12:12  profilanswer
 

Tu peux essayer de ré-implementer Djikstra toi-même, l'algo en soit est assez simple, et tu auras toutes les informations requise. Et Djikstra parcourt tous les chemins me semble-t-il :D


---------------
Perhaps you don't deserve to breathe
n°2161541
Joel F
Real men use unique_ptr
Posté le 26-10-2012 à 15:14:09  profilanswer
 

la philosophie de boost.graph est de passer un visiteur a ton algo de parcours. Si tu veux le chemin parcouru, implemente un visitor qui accumule le snodes au fur et a mesure dna sun list.

n°2161590
Polo37
Posté le 26-10-2012 à 19:07:20  profilanswer
 

Ben en fait c'est à ça que sert le p dans les params (pour predecessor map) et comme son nom l'indique permet de retrouver le chemin par lequel on est passé (par contre ce n'est pas valable dans le cas des graphes multiples, i.e. avec plusieurs arcs parallèles entre deux nœuds). Donc au final dans d[i] tu as la distance entre s et i et dans p[i] tu as le nœud prédécesseur de i dans le plus court chemin de s à i (et donc p[p[i]] le prédécesseur du prédécesseur etc..) dans p[s] y'a s ce qui donne la condition d’arrêt.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Boost dijkstra : recuperer l'intégralité du chemin

 

Sujets relatifs
[Android] Récupérer les reseaux mobilesrécupérer la valeur d'une cellule dans plusieurs classeurs
Récupérer les nombres d'une chaine de caractère ???Récupérer valeur dir en vbs
[RESOLU] sscanf pour récupérer des floatRécupérer tous les noms de fichier dans un dossier
Récupérer les méthodesChemin de fichier en variable
[Web] Recuperer info. par UDP pour etre affichée sur du HTML 
Plus de sujets relatifs à : Boost dijkstra : recuperer l'intégralité du chemin


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR