Floyd算法
首先了解一下最短路径
最短路径就是有几个顶点,已知有些顶点之间的距离,让你求任意两个顶点之间的最短距离
定义一个二维数组F[100][100],F数组中存的就是任意两点的距离,比如F[i][j]存的就是从i顶点到j顶点的距离
先理解简单的:如果只有三个顶点
顶点1,顶点2,顶点3
那么顶点1到顶点3的最短距离就是min(f[1][3],f[1][2]+f[2][3]),因为只有两种选择,要么就是顶点1直接到顶到3,要么就是顶点1先到顶点2,再由顶点2到顶点3
那如果有很多个顶点呢?
就要遍历顶点
for(k=1;k<=n;k++)//n是顶点个数
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(F[i][j]>F[i][k]+F[k][j])
{
F[i][j]=F[i][k]+F[k][j];
}
}
}
}
举个例子说明如果k=2,现在就遍历F数组,比较F[i][j]和F[i][k]+F[j][k]