BellmanߝFord最短路径算法的性能

发布于 2024-07-25 01:49:32 字数 260 浏览 2 评论 0原文

我用队列实现了 Bellman - Ford 算法的解决方案,并将其性能与 Dijkstra 算法进行了比较。 他们非常接近,这对我来说是一个惊喜,因为贝尔曼 - 福特的复杂性是 O(NM)。 我知道复杂性是针对最坏情况的,但结果仍然令人惊讶。 我搜索了一些关于 Bellman-Ford 的信息,只在 Sedgewick, Algorithms in Java 中找到了这样的说法“在真实网络上,Bellman-Ford 算法通常以线性时间运行”。 您能给我解释一下贝尔曼-福特算法的性能行为吗?

I implemented the solution of Bellman - Ford algorithm with a queue and I compared its performance with the Dijkstra algorithm. They were pretty close and that was a surprise for me because the complexity of Bellman - Ford is O(NM). I know that the complexity is for the worst case, but still the result was surprising. I searched for some information about Bellman - Ford and I found only this statement in Sedgewick, Algorithms in Java "on real networks the Bellman–Ford algorithm typically runs in linear time".
Could you give me an explanation of the Bellman - Ford algorithm performance behaviour?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谢绝鈎搭 2024-08-01 01:49:32

这是一篇非常简单的论文( PDF 链接)。

贝尔曼-福特的复杂性
算法取决于数量
边缘检查或放松呼叫。
(注意这不同于
放松步骤指的是
实际进行的更改。)
如前所述,松弛次数
调用可以小于 |V ||E| 和
BGL 实施。 事实上,它是
远小于 |V ||E| 在里面
平均情况。

它还列出了伪代码和进一步的分析。

Here's a paper on it that's pretty straight forward (PDF Link).

The complexity of the Bellman-Ford
algorithm depends on the number of
edge examinations, or relaxation calls.
(Note this is different from
relaxation steps which refer to the
actual changes performed.)
As mentioned, the number of relaxation
calls can be smaller than |V ||E| with
the BGL implementation. In fact, it is
much smaller than |V ||E| in the
average case.

It lists pseudocode and further analysis as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文