在Johnson's algorithm中,创建一个新节点,然后从该节点向所有其他节点添加零权重边缘,作为重新加权过程的第一步。但是为什么不添加新节点就不能做同样的事情?那就是选择图中的任意节点,并将零权重边缘添加到所有其他节点,运行Bellman Ford算法计算所需的权重,然后像以前一样进行?
答案 0 :(得分:1)
以这种方式引入负循环是可能的。给定图
-1
a ---> b,
选择b
作为根。
答案 1 :(得分:0)
Johnson算法需要一个附加节点s
的另一个原因是,该节点确保通过Bellman-Ford算法(即每个节点{{1 }}的权重范围从u
到s
)。如果不能保证这一点,则无法进行加权,因此该算法将无法工作。请注意,添加新节点u
不会引入(新的)负加权循环。