作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
谁能解释下图中的约翰逊算法?我真的很困惑算法是如何工作的。我知道它是 Bellman Ford
和 Dijkstra 的
的组合。
但我无法找到一个很好的图形解释,逐步解释解决方案。
这是图表。
关于距离的注意事项:从 f 到 b 是 -5(不是 5); g 到 e 是 -3(不是 3); b 到 d 是 -5(不是 5)
非常感谢。我知道我必须先改变权重,但我不确定如何改变权重。
问题:我想找到从 b 到 c 的最短路径。
最佳答案
正如您已经完成的那样,我们引入了一个新节点,称为 z,与所有其他节点的权重为 0 连接。我们计算出从 z 到彼此路径的最短路径并得到:
h(a) = 0
h(b) = -5
h(c) = 0
h(d) = -10
h(e) = -4
h(f) = 0
h(g) = -1
然后我们重新计算边的权重:
w'(a,d) = w(a,d) + h(a) - h(d) = 11 + 0 - (-10) = 21
w'(b,a) = w(b,a) + h(b) - h(a) = 7 + (-5) - 0 = 2
w'(b,d) = w(b,d) + h(b) - h(d) = -5 + (-5) - (-10) = 0
w'(c,a) = w(c,a) + h(c) - h(a) = 17 + 0 - 0 = 17
w'(c,b) = w(c,b) + h(a) - h(b) = 3 + 0 - (-5) = 8
w'(d,f) = w(d,f) + h(d) - h(f) = 12 + (-10) - 0 = 2
...
然后使用 Dijkstra 找到从 a 到 b 的最短路径。这涵盖了吗?
关于algorithm - 约翰逊算法图解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17984373/
概述: 我正在尝试用 Java 实现 Johnson Trotter 算法,这样我就可以解决关于 Project Euler 的问题。 .我看了又看,但据我所知,我已经正确实现了所有内容,你知道这是错
我很难理解 Johnson Algorithm 的用处.我认为这个问题对于有这方面知识的人来说一定听起来很愚蠢,但我想不通。根据维基百科,约翰逊算法使用贝尔曼福特算法将边的权重转换为非负权重,然后使用
我正在尝试在 ruby 1.8.7 上安装 johnson 2.0.0pre3 gem,但出现此编译错误: (stable)$ gem install johnson -v '2.0.0pre3'
我是一名优秀的程序员,十分优秀!