微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

可以修改 BFS 以搜索具有负权重边的图吗?

如何解决可以修改 BFS 以搜索具有负权重边的图吗?

我编写了一个 DFS 算法,它可以找到图中顶点之间的路径,但想对其进行优化以返回包含最少边数的路径。

我只想切换到 BFS 算法,但鉴于我的图形的属性和结果路径必须满足的条件,我不确定我需要如何修改它。

图表: 无向、加权且包含具有正权重、负权重和权重为 0 的边。

路径: 不能多次访问任何顶点。路径的总权重必须始终为正,包括到路径末端顶点之前的任何顶点的路径。

权重可以被认为是使用每条路径的成本,总权重可以被认为是可用的数量。正权重会增加可用的数量,负权重会消耗它们的权重。

任何帮助将不胜感激,谢谢!

解决方法

BFS 适用于未加权的图(或所有边具有相同权重的图)。
对于加权图,可以使用诸如 Dijkstra's(“修改的 BFS”)或 A*(“修改的 Dijkstra”)之类的算法。
然而,Dijkstra's 或 A* 都不能在负权重下正常工作。
对于负权重的图,请考虑 Bellman–Ford algorithm

编辑:如果您只想使用最少数量的边同时保持

路径的总权重必须始终为正,包括向上的路径 到路径末端顶点之前的任何顶点。

您可以使用 BFS 并将权重用作选择标准,这意味着在向队列添加边之前进行检查。如果添加它会使总重量为负,请不要添加。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。