约翰逊的算法图解释

时间:2013-08-01 02:41:04

标签: algorithm graph-theory

任何人都可以解释约翰逊的算法,如下图所示? 我真的很困惑算法是如何工作的。我知道它是Bellman FordDijkstra's的组合。

但是我无法找到一个好的图解释,这解释了解决方案的步骤。

这是图表。 Graph

关于距离的注意事项:从f到b是-5(不是5); g到e是-3(不是3); b到d是-5(不是5)

非常感谢你。我知道我必须先改变重量,但我不确定如何改变重量。

问题:我想找到从b到c的最短路径。

1 个答案:

答案 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 的最短拍摄时间。这涵盖了吗?