首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dijkstra算法与负权与循环

Dijkstra算法与负权与循环
EN

Stack Overflow用户
提问于 2015-02-18 15:55:51
回答 2查看 3K关注 0票数 2

研究贪婪算法。总结一下Dijkstra算法的一些重要方面,这是正确的。我怀疑(4)和(1),有人能帮我吗?

(1)如果所有边权都为负值,Dijkstra算法工作良好。

(2)如果图中有负圈,则Dijkstra进入无限循环,且永不结束。

(3)如果一个图有一个负权边,但没有负循环,则该算法不能很好地工作。

(4)如果图没有负循环,则算法工作良好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-18 16:23:12

迪克斯特拉算法只适用于具有非负边的图.这是因为它假设当一个节点第一次从队列中弹出时,我们已经找到了到达该节点的最短路径,而且即使有一个负重,这也不一定是正确的。

因此I是假的,II是假的(因为负循环未必是可达的),III是真,IV是假的(即使没有负循环,它仍然有负的边)。

票数 5
EN

Stack Overflow用户

发布于 2015-02-18 16:32:18

如果我没记错的话,Dijkstra的算法(至少是经典版本)有一个内置的假设,即图中的所有权重都是非负的。因此,如果我们在图中有负边,我们就不能保证它能正确工作。

(1)在第一种情况下,我们最有可能得到一条最长的边链,其权重绝对值最高作为最短路径,从技术上讲,这是正确的最短路径。(我假设这个图没有负圈)

( II)误为负循环可能是不可达的(如Peter de Rivaz 正确地说)

我假设第三段是关于有负权的边的图,但没有负循环。在这种情况下,有可能在一个循环中嵌入算法,因为它可以找到一个具有负权边的循环,在算法中的某个点上,我们决定了一个边的权重的下一步。毫无疑问,消极的循环永远是第一选择,所以即使有一个非负的循环,我们也有无限循环的可能性。

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

https://stackoverflow.com/questions/28587924

复制
相关文章

相似问题

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