图中每个顶点之间的距离

Vit*_*mud 4 algorithm graph dijkstra vertices

是否有一种算法/有效的方法来计算图中每个顶点到所有其他顶点的距离。

与 Dijkstra 不同 - 我正在寻找一种方法来计算所有顶点到所有顶点的距离(不是一个到所有顶点)。

谢谢!

das*_*ght 6

如果“距离”指的是“最短距离”,那么答案是“是”。一种非常流行的全对最短路径算法是Floyd Warshall 算法。它非常容易实现:

for k = 0 ; k != N ; k++
    for i = 0 ; i != N ; i++
        for j = 0 ; j != N ; j++
            W[i,j] = MIN(W[i,j], W[i,k]+W[k,j])
Run Code Online (Sandbox Code Playgroud)

然而,它不适用于大规模稀疏图,因为它使用邻接矩阵实现。它也不适用于具有负循环的图,因为此类图中的最短路径是未定义的。