Ho bisogno di utilizzare la libreria Boost per ottenere il percorso più breve da un punto a un altro. Ho esaminato il codice di esempio ed è decentemente facile da seguire. Tuttavia, l'esempio mostra solo come ottenere le distanze complessive. Sto cercando di capire come iterare sulla mappa del predecessore in realtà ottenere il il percorso più breve e non riesco a capirlo. Ho letto queste due domande sul tema:Boost dijkstra shortest_path - come puoi ottenere il percorso più breve e non solo la distanza?
Dijkstra Shortest Path with VertexList = ListS in boost graph
Boost:: Dijkstra Shortest Path, how to get vertice index from path iterator?
Ma in entrambi gli esempi forniti, il typedef IndexMap non sembra funzionare con il compilatore Visual Studio e, francamente I miglioramenti al typedef mi confondono un po 'e sto avendo qualche problema a capire tutto questo. Basato sul codice di esempio di Boost qui, qualcuno potrebbe dirmi come posso ottenere il percorso da esso? Sarei molto grato.
http://www.boost.org/doc/libs/1_46_1/libs/graph/example/dijkstra-example.cpp
Nota: penso che sia necessario aggiungere path.push_back (corrente); proprio prima di te per il finale path.push_back (start); - quando l'ho usato, continuava a dimenticare il nodo prima dell'ultimo. – Darkenor
@Darkenor Scusaci, credo che ora funzioni correttamente. –
Thx per lo snippet utile! È difficile modificare questo codice per visualizzare anche le distanze individuali per i segmenti? – kfmfe04