首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候Dijkstra和Bellman-Ford算法都找不到最短路径?

什么时候Dijkstra和Bellman-Ford算法都找不到最短路径?
EN

Stack Overflow用户
提问于 2014-04-10 22:21:13
回答 3查看 4K关注 0票数 3

我知道Dijkstra在边权重为负的情况下会失败,但何时两种算法都会失败?

EN

回答 3

Stack Overflow用户

发布于 2014-04-10 22:34:47

如果存在负循环(从源头上可以到达),可以认为贝尔曼-福特失败了。负循环的主要问题是,你可以继续遍历它,减少路径的成本,因此不存在到某些顶点的有限最短路径(因此,Bellman-Ford是否真的失败是有争议的-它可以检测到这些循环)。

Dijkstra的算法对于负循环也会有类似的问题(更不用说处理负边权重的更一般的问题了)。

另一种情况可能是无法到达的顶点,但同样可以检测到它们是无法到达的。

票数 4
EN

Stack Overflow用户

发布于 2014-04-10 22:34:38

如果图包含负循环,并且该循环可以从源节点到达,而目的节点可以从该循环到达,则这两种算法都不会找到最短路径。在这种情况下,没有最短路径-您可以在循环中执行无限次迭代,从而始终减少路径长度。

票数 0
EN

Stack Overflow用户

发布于 2014-04-10 22:52:14

由于如果存在负循环,则不存在最短路径,而Bellman-Ford可以检测到负循环,因此您可以争辩说,它永远不会失败。(同样,因为您可以检测到两个顶点之间何时没有路径)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22990797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档