有向图的最短路径(Floyd算法)
最近在研究最短路径算法,使用java实现。
原始数据是一共有6个点,他们之中任意2个点(i,j)之间的距离v(i,j)的数值如下面二位数组中所示,整体算法使用Java语言实现。
[java]
<SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif">class Floyd{</SPAN>
class Floyd{
[java]
public static void main(String[] args){
int[][] a = new int[][] {
{ 0, 9, 4, 0, 0, 0 },
{ 0, 0, 0, 12, 5, 0 },
{ 0, 4, 0, 0, 13, 0 },
{ 0, 0, 0, 0, 0, 2 },
{ 0, 0, 0, 3, 0, 15},
{ 0, 0, 0, 0, 0, 0 },
};
int size=6;
for(int k=0;k<size;k++){
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
if(i==j||i==k||j==k)
continue;
if(a[i][k]!=0&&a[k][j]!=0){
int total=a[i][k]+a[k][j];
if(total<a[i][j]||a[i][j]==0)
a[i][j]=total;
}
}
}
}
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
System.out.printf("%3d",a[i][j]);
}
System.out.println();
}
}
}
补充:综合编程 , 其他综合 ,