Answers:
Dijkstra允许为每个步骤分配除1以外的距离。例如,在路由时,距离(或权重)可以通过速度,成本,首选项等进行分配。然后,该算法为您提供了从源到遍历图中每个节点的最短路径。
同时,BFS基本上只是在每次迭代时将搜索扩展一个“步”(链接,边沿,无论您想在应用程序中调用什么),这恰好找到了到达任何步骤所需的最小步数。来自您的源(“根”)的给定节点。
如果您考虑旅行网站,则由于节点上的权重(距离),它们使用Dijkstra的算法。
如果您考虑所有节点之间的距离相同,那么BFS是更好的选择。
例如,考虑A -> (B, C) -> (F)
边权重为A->B
= 10,A->C
= 20,B->F
= C->F
= 5。
在这里,如果我们应用BFS,答案将是ABF或ACF,因为两者都是最短的路径(相对于边的数量),但是,如果我们应用Dijstra的方法,则答案将是ABF,因为它考虑了连接的权重路径。
Dijkstra的算法