我们真的需要在Johnson算法中添加一个额外的节点吗?

时间:2019-01-08 22:57:37

标签: algorithm graph

Johnson's algorithm中,创建一个新节点,然后从该节点向所有其他节点添加零权重边缘,作为重新加权过程的第一步。但是为什么不添加新节点就不能做同样的事情?那就是选择图中的任意节点,并将零权重边缘添加到所有其他节点,运行Bellman Ford算法计算所需的权重,然后像以前一样进行?

2 个答案:

答案 0 :(得分:1)

以这种方式引入负循环是可能的。给定图

   -1
a ---> b,

选择b作为根。

答案 1 :(得分:0)

Johnson算法需要一个附加节点s的另一个原因是,该节点确保通过Bellman-Ford算法(即每个节点{{1 }}的权重范围从us)。如果不能保证这一点,则无法进行加权,因此该算法将无法工作。请注意,添加新节点u不会引入(新的)负加权循环。