可以简单的通过运行|V|次单源最短路径算法来解决,每次使用一个不同的结点作为源结点
多数算法采用邻接矩阵来表示图,因此
算法的输入为一个n*n的矩阵W,代表一个有n个结点的有向图G = (V, E)的边的权重
wij = 0 若i = j
权重 若i != j,且(i, j)属于E
INF 若i != j,且(i, j)不属于E
输出也是一个n *n的矩阵D = (dij),dij表示从结点i到结点j的一条最短路径的权重
以及一个前驱结点矩阵P = (pij),pij在i = j或者从i到j不存在路径时为NIL,在其他情况下给出从结点i到结点j的某条最短路径上结点j的前驱结点
矩阵的一行第i行所诱导的子图,应当是一棵根节点为i的最短路径树,最短路径的输出
PRINT-ALL-PAIRS-SHORTEST-PATH(P)
for i = 1 to n
for j = i+1 to n
PRINT-PAIRS-SHORTEST-PAHT(P, i, j)
PRINT-PAIRS-SHORTEST-PAHT(P, i, j)
if(i == j)