如何记录从源顶点到目标顶点的所有最短路径



我目前正在使用Boost图形库的dijkstra算法http://www.boost.org/doc/libs/1_53_0/libs/graph/doc/dijkstra_shortest_paths.html来计算一对顶点之间的最短距离路径。到目前为止,我只能获得存储在前导映射中的一条最短路径。

所以我的问题是:是否有可能让函数返回一对顶点之间的所有可能的最短路径?

不,你需要自己构建。一种方法是使用两次调用Dijkstra来计算从源顶点s(在G中)到汇聚顶点t(即转置图中到t的距离)的距离。然后,提取一个恰好包含这些节点u的子图,使距离(s, u) +距离(u, t) =距离(s, t)和那些弧uv使距离(s, u) +长度(u, v) +距离(v, t) =距离(s, t),并递归地枚举该子图中的所有s-t路径。

最新更新