首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dijkstra's vs Bellman-Ford算法

dijkstra's vs Bellman-Ford算法
EN

Stack Overflow用户
提问于 2019-11-28 15:19:03
回答 1查看 189关注 0票数 2

我目前的理解是,dijkstra的算法比贝尔曼-福特算法更有效,只是它不能处理负边缘。然而,假设我们有一个边权重图,其中有负权重的边,图中没有负权重的圈,我们还能使用dijkstra算法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-11-28 18:00:53

这个问题已经在这里得到了很好的回答。https://stackoverflow.com/a/13159425/12449779

总而言之,Dijkstra的算法在每次迭代中以最小距离标记离“标记”顶点的顶点。最初,源顶点是距离为0的唯一标记顶点。假设存在两个标记顶点A和B,它们与源之间存在一定的有限距离,并且它们的路径不重叠()。当前,到A和B的路径将被认为是从A到B的最短可能路径。由于路径不重叠,因此任何从源到A到B的路径的长度将是Source到A+从A到B的路径的长度,这大于从源到B的路径的长度,因为从源到A和B的路径不重叠。但如果允许负权重边,这不会保持。因为从A到B的路径长度可以是负。因此,Dijkstra的算法不适用于。也没有简单的方法可以将具有负边的一般图转换为具有非负边的图。贝尔曼福特适用于任何不包含负权圈的图。

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

https://stackoverflow.com/questions/59083538

复制
相关文章

相似问题

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