国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java實現Floyd算法

2024-07-13 10:15:53
字體:
來源:轉載
供稿:網友

Floyd算法:用于多源最短路徑的求解,算出來的是所有的節點到其余各節點之間的最短距離。

該算法的思路是:首先初始化距離矩陣,然后從第一個點開始逐漸更新矩陣點值。d[i][j]表示從i點到j點的距離。第k次更新時,判斷d[i][k]+d[k][j]與d[i][j]的大小,如果前者小,則更新這個值,否則不變。

給一個例子:

java,Floyd

具體的floyd實現算法如下[java] view plain copy

package com.blyang;  public class Floyd {      int[][] Matrix;   char[] Nodes;      private final int INF = Integer.MAX_VALUE;      public Floyd(char[] Nodes, int[][] Matrix){     this.Nodes = Nodes;     this.Matrix = Matrix;   }      public void floyd(){          int[][] distance = new int[Nodes.length][Nodes.length];          // 初始化距離矩陣     for(int i=0; i<Nodes.length; i++){       for(int j=0; j<Nodes.length; j++){         distance[i][j] = Matrix[i][j];       }     }          //循環更新矩陣的值     for(int k=0; k<Nodes.length; k++){       for(int i=0; i<Nodes.length; i++){         for(int j=0; j<Nodes.length; j++){           int temp = (distance[i][k] == INF || distance[k][j] == INF) ? INF : distance[i][k] + distance[k][j];           if(distance[i][j] > temp){             distance[i][j] = temp;           }         }       }     }          // 打印floyd最短路徑的結果     System.out.printf("floyd: /n");     for (int i = 0; i < Nodes.length; i++) {       for (int j = 0; j < Nodes.length; j++)         System.out.printf("%12d ", distance[i][j]);       System.out.printf("/n");     }   } } 

在實現之后,針對上圖的點和權值,給定一個測試:

package com.blyang;  public class Main {        public static void main(String[] args) {     int INF = Integer.MAX_VALUE;          char[] Nodes = {'0', '1', '2', '3'};     int matrix[][] = {          /*A*//*B*//*C*//*D*/      /*A*/ {  0,  1,  2,  1},      /*B*/ { INF,  0, INF, INF},      /*C*/ { INF,  3,  0,  1},      /*D*/ { INF,  1,  1,  0},      };            int[] dist = new int[Nodes.length];        Floyd floyd = new Floyd(Nodes, matrix);     floyd.floyd();    }    } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玛曲县| 阆中市| 连云港市| 内江市| 全南县| 嘉祥县| 无为县| 措美县| 桑植县| 车致| 杭锦旗| 佛学| 武清区| 隆德县| 乌海市| 商河县| 淮北市| 堆龙德庆县| 平原县| 平湖市| 普安县| 卫辉市| 措美县| 永州市| 子洲县| 新巴尔虎右旗| 霍山县| 安多县| 贡觉县| 鹰潭市| 平谷区| 兴隆县| 满洲里市| 格尔木市| 富裕县| 香格里拉县| 册亨县| 博客| 科尔| 南丰县| 阆中市|