【问题标题】:How to record all the shortest paths from a source vertex to a destination vertex如何记录从源顶点到目标顶点的所有最短路径
【发布时间】:2013-04-17 19:42:43
【问题描述】:

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

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

【问题讨论】:

  • 嗯,答案是肯定的,但它的代码会更复杂,并且需要更多的时间来执行它。所以:每次获得最短的子路径时,只需使用列表,对于那些以及那些......

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


【解决方案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 路径。

【讨论】:

    猜你喜欢
    • 2021-03-11
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2023-04-11
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多