两者都可用于从单一来源找到最短路径.BFS运行O(E+V),而Dijkstra运行O((V+E)*log(V)).
另外,我见过Dijkstra在路由协议中使用了很多.
因此,如果BFS可以更快地做同样的事情,为什么要使用Dijkstra的算法呢?
在A*中,通常你获得的结果只有一条路径.根据A*,对于给定的起点和终点是否有可能有3条推荐路径?所以第二个返回的是第二个最佳路径,第三个是第三个最佳路径.
我想的可能是以某种方式修改启发式以反映第二和第三条最佳路径.你们怎么想?
更新: 我的实现是在PHP中,我使用的是封闭集.所以,如果有办法做到这一点,请告诉我.