弗洛伊德算法是一种用于寻找带权图中最短路径的算法,应用于具有正右边和负右边(但不能有负环)的图。该算法有时也称为弗洛伊德-沃尔什算法。该算法基于动态规划,时间复杂度为O(V^3),其中V是图中的顶点数。或者,该算法可用于检测方案中的负循环并找到传输闭包。
下面是一个使用弗洛伊德算法来查找图中所有顶点对之间的最短路径的示例:
假设我们有一个包含 4 个顶点(A、B、C 和 D)以及以下右边缘的图:
A -> B:3
A -> C:8
A -> D:-4
B -> C:1
乙 -> 丁:7
C -> D:2
我们可以用矩阵来表示每对顶点之间的距离,其中第 i 行...