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

时间:2013-04-17 19:42:43

标签: c++ algorithm boost graph boost-graph

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

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

1 个答案:

答案 0 :(得分:1)

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