我还在学习图形算法,现在我们已经很好了。
我们假设我们修改约翰逊的算法以使用不同的重新加权方案。让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)}
的含义。请帮忙!
答案 0 :(得分:0)
符号对我来说不是那么清楚。
为什么我们需要添加顶点并将其连接到所有其他顶点?
因为Johnson的算法通过运行Bellman-Ford算法来进行重新加权,而Bellman-Ford算法又需要单个源最短路径问题。
为什么我们需要重新加权?
最终得到一个非负实例,可以通过运行Dijkstra算法来解决。
Johnson算法的唯一要求是图中没有负循环。如果您正在考虑提出一种新的重新加权技术,那么请确保保留与原始图形相同的最短路径集(这就是为什么每个人都喜欢约翰逊的算法:呃!我的图中有这个负边缘。我讨厌它们我不能使用Dijkstra算法.......嗯。这是解决方案:Johnson的算法)。