顶点最短路径(弗洛伊德算法)
Posted bigff
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顶点最短路径(弗洛伊德算法)相关的知识,希望对你有一定的参考价值。
将每个顶点之间的距离做成一个矩阵
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);
}
}
以上是关于顶点最短路径(弗洛伊德算法)的主要内容,如果未能解决你的问题,请参考以下文章