任何人都可以解释约翰逊的算法,如下图所示?
我真的很困惑算法是如何工作的。我知道它是Bellman Ford
和Dijkstra's
的组合。
但是我无法找到一个好的图解释,这解释了解决方案的步骤。
这是图表。
关于距离的注意事项:从f到b是-5(不是5); g到e是-3(不是3); b到d是-5(不是5)
非常感谢你。我知道我必须先改变重量,但我不确定如何改变重量。
问题:我想找到从b到c的最短路径。
答案 0 :(得分:7)
正如您已经完成的那样,我们引入了一个新节点,称之为 z ,与所有其他节点的权重为0的连接。我们计算出从 z 到另一条路径的最短路径,然后得到:
h(a) = 0
h(b) = -5
h(c) = 0
h(d) = -10
h(e) = -4
h(f) = 0
h(g) = -1
然后我们重新计算边缘的权重:
w'(a,d) = w(a,d) + h(a) - h(d) = 11 + 0 - (-10) = 21
w'(b,a) = w(b,a) + h(b) - h(a) = 7 + (-5) - 0 = 2
w'(b,d) = w(b,d) + h(b) - h(d) = -5 + (-5) - (-10) = 0
w'(c,a) = w(c,a) + h(c) - h(a) = 17 + 0 - 0 = 17
w'(c,b) = w(c,b) + h(a) - h(b) = 3 + 0 - (-5) = 8
w'(d,f) = w(d,f) + h(d) - h(f) = 12 + (-10) - 0 = 2
...
然后使用Dijkstra找到从 a 到 b 的最短拍摄时间。这涵盖了吗?