Floyd算法是求任意顶点A到任意顶点B的最短路径,对于任意的顶点A和B,最短路径可能直接到达,也可能经过其他的顶点到达,通过比较权值w[A][X]+w[x][B]和w[A][B],较小者即为最短路径。因此对于任意的顶点A,B,对所有的点进行循环,找出最短路径
//PathMatrix[v][w] 保存任意顶点v到w的带权长度
//ShortPathTable[][] 保存路径
public void shortPath_Floyd(int PathMatrix[][],int ShortPathTable[][]){
for(int i=0;i
PathMatrix[i][k]+PathMatrix[k][j]){ //如果经过下标为k的顶点的路径比原来两点间路径更短,修改两点间权值
PathMatrix[i][j]=PathMatrix[i][k]+PathMatrix[k][j];
ShortPathTable[i][j]=k; //路径设置为经过下标为k的顶点
}
}
}
}
for(int i=0;i