1

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

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

4

1 回答 1

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 路径。

于 2013-04-17T20:49:26.660 回答