码迷,mamicode.com
首页 > 编程语言 > 详细

顶点最短路径(弗洛伊德算法)

时间:2019-04-30 13:59:44      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:oid   bsp   更新   floyd   stat   最小   max   算法   public   

将每个顶点之间的距离做成一个矩阵

 int[][] matrix = {
{0,5,2,inf,inf,inf,inf},
{5,2,inf,1,6,inf,inf},
{2,inf,0,6,inf,8,inf},
{inf,1,6,0,1,2,inf},
{inf,6,inf,1,0,inf,7},
{inf,inf,8,2,inf,0,3},
{inf,inf,inf,inf,7,3,0},
};

更新最短距离

 Math.min()将两者进行比较选择最小的存入矩阵

   Math.min(matrix[i][j],matrix[i][k]+matrix[k][j]);

 

所有代码:

public class as {

    final static int inf = Integer.MAX_VALUE;

public static void floyd(int[][] matrix){ //跟新最短路径
for(int k = 0 ;k<matrix.length;k++){
for(int i = 0;i<matrix.length;i++){
for(int j=0;j<matrix.length;j++){
if(matrix[i][k]== inf||matrix[k][j]==inf){
continue;
}
matrix[i][j]= Math.min(matrix[i][j],matrix[i][k]+matrix[k][j]);
}
}
System.out.println("最短路径矩阵:\n");

for(int i = 0;i<matrix.length;i++){
for (int j =0;j<matrix.length;j++){
System.out.print(matrix[i][j]+" ");
}
System.out.println("\n");
}
}
}
public static void main(String[] args) {
int[][] matrix = {
{0,5,2,inf,inf,inf,inf},
{5,2,inf,1,6,inf,inf},
{2,inf,0,6,inf,8,inf},
{inf,1,6,0,1,2,inf},
{inf,6,inf,1,0,inf,7},
{inf,inf,8,2,inf,0,3},
{inf,inf,inf,inf,7,3,0},
};
floyd(matrix);

}


}

 

顶点最短路径(弗洛伊德算法)

标签:oid   bsp   更新   floyd   stat   最小   max   算法   public   

原文地址:https://www.cnblogs.com/BigFF/p/10795544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!