Floyd算法:用于多源最短路径的求解,算出来的是所有的节点到其余各节点之间的最短距离,其初始化了2个矩阵分别为
- matrix(图的邻接举证)
- path(保存最短路径的矩阵)
算法的时间复杂度是O(n^3)
——单源最短路径算法Dijkstra的时间复杂度是O(n^2);
如图:
import java.util.Stack;
public class ShortestPathFloyd {
int n;
int[][] matrix;
int[][] path;
int[][] path2;
int MAX_DISTANCE=Integer.MAX_VALUE;
public void floyd(int n,int[][] newMatrix){
matrix=new int[n][n];
path=new int[n][n];
path2=new int[n][n];
this.n = n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
this.path[i][j]=j;
this.path2[i][j]=j;
}
}
for (int i=0;i<n;i++){
for(int j=0;j<n;j++){