【发布时间】:2012-05-04 20:32:10
【问题描述】:
我正在尝试重写我创建的一个简单的网络负载模拟工具,这次使用 Boost 库来提高性能(并避免实现错误)。在原始程序中,我通过调用 Dijkstra 算法来计算网络中每个源节点的最短路径,所以当我发现有一个像 Johnson 的全对算法时我很高兴(我的图将相对稀疏, 我假设)。然而,该算法只返回一个距离矩阵,而我需要实际的路线——至少类似于 Dijkstra 的算法实现返回的前任地图。有什么方法可以实现这一点,还是我应该返回为图中的每个顶点重复调用 Dijkstra?我一整天都在寻找,但什么也没找到,我想我只是想在回到迭代方法之前确定一下。
谢谢!
【问题讨论】:
-
我认为giogadi's answer 虽然敏感,但在概念上并不干净。我倾向于解决同样问题的方法是首先运行昂贵的 johnson all pair,然后在感兴趣的边缘,使用this explanation on Dijsktra + predecessor map + post-parsing the map 获取实际的详细路径 ... [以及在目的地停留的访客例外顶点](stackoverflow.com/questions/32047840/make