【发布时间】:2014-10-16 11:18:11
【问题描述】:
我正在阅读图算法,我遇到了这两种算法:
在寻找节点间最短路径时,Dijkstra 算法和 BFS 有什么区别?
我对此进行了很多搜索,但没有得到任何满意的答案!
BFS 在图中寻找最短路径的规则是:
- 我们发现所有连接的顶点,
- 将它们添加到队列中,然后
- 存储从源 u 到该顶点 v 的距离(重量/长度)。
- 更新从源 u 到距离最短的顶点 v 的路径,我们就有了!
这与我们在 Dijkstra 算法中所做的完全一样!
那么为什么这些算法的时间复杂度如此不同?
如果有人可以借助伪代码来解释它,那么我会 非常感谢!
我知道我错过了什么!请帮忙!
【问题讨论】:
-
你看过维基百科吗? “广度优先搜索可以看作是 Dijkstra 算法在未加权图上的一个特例,其中优先级队列退化为 FIFO 队列。”
-
是的!我也在 stackoverflow 上阅读了几乎所有与此相关的问题,但没有得到正确的答案!
标签: algorithm graph breadth-first-search shortest-path dijkstra