【发布时间】:2019-06-20 07:22:11
【问题描述】:
Johnson 的算法使用 Bellman-Ford 算法作为子程序来重新加权其输入图以消除其边上的负权重(假设没有负循环)。在标准实现中,在添加一个连接到所有其他节点的额外节点后,权重为 0,我们将新权重定义为:
w'(u,v) = w(u,v) + h(u) - h(v)
这个新的权重必须满足两个要求:
- 最短路径不变性(重新加权后的图中最短路径相同)
- 非负边权重(所有边必须具有非负权重)
在其标准实现中,函数h因此被定义为从添加节点到目标节点的最短路径权重(距离):
h(v) = d(s,v)
所以我想知道的是:以其他方式定义 h 是否有意义?我正在考虑的一个方面是为此需要运行 Bellman-Ford。这主要是出于好奇,所以如果有替代 h 的“规范”定义的替代方案,即使是小细节对我来说也很重要。
【问题讨论】:
-
为了确保我能正确回答您的问题 - 您列出了新权重 w' 的两个要求。问题是“仅使用 h 来找到这个新函数 w'吗?”或者你在问为什么选择 h ?或者你在问是否有从 h 定义 w' 的直觉?还是别的什么?
-
我在问是否还有其他的 h 选择,与标准实现中 h 的“规范”选择相比,这些选择可能有它们的好处。因此,找出 h 的优势/直觉当然是有帮助的!
标签: algorithm graph-algorithm shortest-path