使用bfs的所有顶点之间的最短路径

时间:2016-06-28 09:56:46

标签: algorithm graph pseudocode breadth-first-search

我正在学习图论,我需要帮助。 我需要使用bfs在图中所有顶点之间的最短路径算法。我知道bfs是如何工作的但是我不知道“重制”那个算法来找到图中所有顶点之间的最短路径。

1 个答案:

答案 0 :(得分:0)

最简单的方法是每个节点重复BFS,如Yerken所说。其时间复杂度为O((v + e)* v),其中v和e分别是顶点和边的数量。 O(1)< e< O(v ^ 2),所以如果你的图非常密集,那么它就是一个O(v ^ 3)算法。然而,如果图形稀疏且复杂度为O(v ^ 2),则可以通过重复Dijkstra来更快地完成,因为其复杂度为O(v * e * log(v))= O(v * log(v) )。

或者,您可以尝试使用O(v ^ 3)的Floyd-Warshall算法,但它只给出距离,而不是路径。