一尘不染

如果广度优先搜索(BFS)可以更快地执行相同的操作,为什么还要使用Dijkstra的算法?

algorithm

两者都可用于查找来自单一来源的最短路径。BFS在运行O(E+V),而Dijkstra在O((V+E)*log(V))

另外,我看到Dijkstra在路由协议中的用法很像。

因此,如果BFS可以更快地完成相同的操作,为什么还要使用Dijkstra的算法呢?


阅读 332

收藏
2020-07-28

共1个答案

一尘不染

Dijkstra允许为每个步骤分配除1以外的距离。例如,在路由中,距离(或权重)可以通过速度,成本,首选项等进行分配。然后,该算法为您提供了从源到遍历图中每个节点的最短路径。

同时,BFS基本上只在每次迭代时将搜索扩展一个“步”(链接,边沿,无论您想在应用程序中调用什么),这恰好是找到到达任何 步骤 所需的最小 步数
的效果。来自您的源(“根”)的给定节点。

2020-07-28