フロイドのアルゴリズム(フロイド)

com.rao.graphパッケージ; 


/ * * 
 * @author Srao 
 * @classNameフロイド
 * @date 2019年12月11日夜06時43分
 * @package com.rao.graph 
 * @descriptionフロイドのアルゴリズム
 * / 
パブリック クラスフロイド{ 

    最終的な静的 int型 INF = Integer.MAX_VALUEの; 

    / * * 
     *フロイドのアルゴリズム
     * @paramマトリックス
     * / 
    パブリック 静的 ボイドフロイド(INT [] []行列){
         //は巡回行列の値を更新し、matrix.lengthリターン行番号である
        ためint型 K = 0 ; K <matrix.length K ++ ){
            INT I = 0 ; I <matrix.length; I ++ ){
                 ためINT J = 0 ; J <matrix.length; J ++ ){
                     IF(行列[I] [K] == || INF行列[K] [J]は== INF)は{
                         続行; 
                    } 
                    行列[I] [J] = Math.min(行列[I]、[J]、行列[I] [K] + 行列[K] [J]); 
                } 
            } 
        } 

        // 最短経路のフロイド結果印刷 
        システム。OUT .println(最短経路マトリックス:);
        INTは iが= 0を I ++; I <matrix.length {)
             のためのint型 J = 0 ; J <matrix.length; J ++ ){ 
                システム。アウト .printf(" %の3D " 、行列[I] [J])。
            } 
            システム。アウト.println(); 
        } 
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){
         INT [] []行列= { 
                { 052、INF、INF、INF、INF}、
                { 50、INF、16 、INF、INF}、
                { 2、INF、06、INF、8 、INF}、
                {INF、16012 、INF}、
                {INF、6、INF、10、INF、7 }、
                {INF、INF、82、INF、03}、
                {INF、INF、INF、INF、730 } 
        }。

        フロイド(マトリックス)
    } 
}

おすすめ

転載: www.cnblogs.com/rao11/p/12024503.html