两者都可用于从单一来源找到最短路径.BFS运行O(E+V),而Dijkstra运行O((V+E)*log(V)).
另外,我见过Dijkstra在路由协议中使用了很多.
因此,如果BFS可以更快地做同样的事情,为什么要使用Dijkstra的算法呢?
寻求一种能够产生 N 条短路径的算法。
有人有在有向图中查找多条短路径的算法的经验吗?我的应用程序用于语言(查找同义词链),但从逻辑上讲,这可能用于地理或社交网络。我想要显着不同的路径,而不仅仅是沿途交换几个节点。我真的很想知道是否有办法避免“枢纽”,即大型机场或超级连接器;或者在语言中,有很多含义的单词。
(对于我的应用程序,我已经用 Dijkstra 和 A-star 解决了这个问题,但除了在获得第一条路径后更改权重之外,我还没有一个好的方法来获得多条路径。)
例如(如果是社交网络),我如何找到连接我和你的多条路径,沿途大多是不同的人。可能有 4-7 个分离点,这是可能的。对于语言和社交网络来说,通常有 6 度左右的分离度。即很少需要 20 个以上的节点。
我见过Dijkstra 算法来找到所有可能的最短路径,这是最短路径算法的一种变体,在寻找最短路径时,BFS 和 Dijkstra 算法有什么区别?,用 A* 算法找到几条最短路径——但没有一条是我所寻求的。
当然有人已经弄清楚了这一点,但我不知道要搜索什么。