实际保存路由的全对最短路径算法?

时间:2012-05-04 20:32:11

标签: shortest-path boost-graph

我正在尝试重写我创建的简单网络负载模拟工具,这次使用Boost库来提高性能(并避免实现错误)。在原始程序中,我通过在其上调用Dijkstra算法来计算网络中每个源节点的最短路径,所以当我发现有像Johnson的那样的全对算法时,我很高兴(我的图形将相对稀疏) , 我假设)。然而,该算法仅返回距离矩阵,而我需要实际路线 - 至少类似于Dijkstra算法实现返回的前任映射。有没有办法实现这一点,还是我应该回去为图中的每个顶点重复调用Dijkstra?我一直在寻找一整天但却找不到任何东西,我想在回到迭代方法之前我想确定一下。

谢谢!

2 个答案:

答案 0 :(得分:1)

这是一个老问题,但我也在寻找答案,我发现之前的答案有点模糊。

假设您有距离矩阵,并且您想要找到从顶点i到顶点j的最短路径。 Vertex i有一组可能的后继N; i的后继是N中的顶点最小化

c(i,n) + d(n,j)

其中c(i,n)是i和邻居n之间的边缘的成本,并且d(n,j)是由距离矩阵给出的n和j之间的最短距离。您只需选择最小化上述等式的邻居n,然后重复该过程,将n替换为n,将n替换为n。

答案 1 :(得分:0)

给定距离矩阵,假设每个(i,j)对都有一条最短路径,假设w的前驱是节点w的电位等于节点的电位,则可以很容易地重建路径。你加上成本或你的优势。