当前位置:编程学习 > 网站相关 >>

有向图的最短路径(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(); 
        } 
    } 
 

补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,