约翰逊的算法:如果我们修改它会怎么样?

时间:2014-11-16 06:16:00

标签: algorithm graph

我还在学习图形算法,现在我们已经很好了。

我们假设我们修改约翰逊的算法以使用不同的重新加权方案。让w* = min_{(u,v) \in E} {w(u,v)}。将所有边w'(u,v) = w(u,v) - w*的新权重函数定义为(u,v) \in E。这仍然会产生正确的算法吗?

我甚至不知道w* = min_(u,v) \in E {w(u,v)}的含义。请帮忙!

1 个答案:

答案 0 :(得分:0)

符号对我来说不是那么清楚。

为什么我们需要添加顶点并将其连接到所有其他顶点?

因为Johnson的算法通过运行Bellman-Ford算法来进行重新加权,而Bellman-Ford算法又需要单个源最短路径问题。

为什么我们需要重新加权?

最终得到一个非负实例,可以通过运行Dijkstra算法来解决。


Johnson算法的唯一要求是图中没有负循环。如果您正在考虑提出一种新的重新加权技术,那么请确保保留与原始图形相同的最短路径集(这就是为什么每个人都喜欢约翰逊的算法:呃!我的图中有这个负边缘。我讨厌它们我不能使用Dijkstra算法.......嗯。这是解决方案:Johnson的算法)。