两者都可用于查找来自单一来源的最短路径。BFS在运行O(E+V),而Dijkstra在O((V+E)*log(V))。
O(E+V)
O((V+E)*log(V))
另外,我看到Dijkstra在路由协议中的用法很像。
因此,如果BFS可以更快地完成相同的操作,为什么还要使用Dijkstra的算法呢?
Dijkstra允许为每个步骤分配除1以外的距离。例如,在路由中,距离(或权重)可以通过速度,成本,首选项等进行分配。然后,该算法为您提供了从源到遍历图中每个节点的最短路径。
同时,BFS基本上只在每次迭代时将搜索扩展一个“步”(链接,边沿,无论您想在应用程序中调用什么),这恰好是找到到达任何 步骤 所需的最小 步数 的效果。来自您的源(“根”)的给定节点。