[英]Can BFS be modified to search a graph with negative weighted edges?
我写了一个 DFS 算法,它在图中找到顶点之间的路径,但想要优化它以返回包含最少边数的路径。
我只想切换到 BFS 算法,但我不确定根据我的图形的属性和结果路径必须满足的标准,我需要如何修改它。
图:无向、加权并包含具有正权重、负权重和 0 权重的边。
路径:不能多次访问任何顶点。 路径的总权重必须始终为正,包括到路径末端顶点之前的任何顶点的路径。
权重可以被认为是使用每条路径的成本,总权重可以被认为是可用的数量。 正权重增加了可用的数量,负权重消耗了它们的使用权重。
任何帮助将不胜感激,谢谢!
BFS 适用于未加权的图(或所有边具有相同权重的图)。
对于加权图,可以使用诸如Dijkstra's (这是“修改的 BFS”)或A* (这是“修改的 Dijkstra”)之类的算法。
然而,Dijkstra's 或 A* 都不能在负权重下正常工作。
对于具有负权重的图,请考虑Bellman-Ford 算法。
编辑:如果您只想使用最少数量的边同时保持
路径的总权重必须始终为正,包括到路径末端顶点之前的任何顶点的路径。
您可以使用 BFS 并将权重用作选择标准,这意味着在向队列添加边缘之前进行检查。 如果添加它会使总重量为负,请不要添加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.