Dijsktra的算法接受单个负边

时间:2015-04-29 00:03:25

标签: algorithm graph dijkstra directed-graph

所以我最近一直在使用Dijkstra的算法和指导图。但是,我似乎无法弄清楚这一点,它真的开始打扰我了。

  

展示如何修改Dijkstra算法以解决单一来源最短的问题   路径问题,如果只有一个负权重边但没有负数   体重周期。

到目前为止,我最初的想法是以某种方式拆分图表并单独执行算法,但这就是我所想到的。

我实际上找到了我正在寻找的解释,但我似乎无法遵循his explanation

  

好的回答!我想指出,如果负边缘的数量有限,那么基于Dijkstra的算法可能会做得更好。例如,如果从u到v只有一个负边,你可以在s和v上运行Dijkstra,然后在d[s]d[s]+w(u, v)+d[v]之间的每个顶点取最小值,给出一个复杂性两次跑Dijkstra

1 个答案:

答案 0 :(得分:3)

Remove the negative edge (u, v), run Dijkstra twice: once starting at s (D1) and once starting at v (D2)

The shortest path between s and t is: min(D1[t], D1[u]+D2[t]+w(u, v)).