BFS是加权图中的最短路径

时间:2017-05-27 05:47:58

标签: algorithm graph

我正在修改单源最短路径算法,并且提到BFS无法正常工作。 但是,如果算法是dijkstra喜欢(使用dist [node]而不是visit [node]),它是否应该正常工作? ,我也有确定这个算法的复杂性的问题

1 个答案:

答案 0 :(得分:0)

不,它无法正常工作。 BFS和Dijkstra算法的定义属性是“探索”新节点的顺序。

在BFS中,您可以根据与源的未加权距离来发现节点。
这导致在您“更新”一些先前探索过的节点后找不到最短路径的失败。例如:

v1--1-->v2--1-->v3--1-->v4--1-->v5--1-->v6
|                               ^
V                               |
--------------100---------------

在BFS中,即使使用您的解决方案,发现和更新成本的顺序也是:

v1:0
v2:1
v5:100
v3:2
v6:101
v4:3
v5:(update): 5

但请注意,现在,v6没有正确的值。

如果你想更多地调整这个解决方案并让每个'更新'触发器重新探索所有邻居 - 这将花费更多的探索(因为你不再受|V|+|E|的限制,事实上可能导致非常效率低下的算法。