フロイドアルゴリズム:マルチソースの最短パスを解決するために使用され、すべてのノードと残りのノード間の最短距離を計算します。
このアルゴリズムのアイデアは、最初に距離マトリックスを初期化し、次に最初のポイントから始まるマトリックスポイント値を徐々に更新します。 d [i] [j]は、ポイントIからポイントjまでの距離を表します。 Kが更新されると、d [i] [k]+d [k] [j]およびd [i] [j]のサイズを判断します。前者が小さい場合は、この値を更新してください。そうしないと、変更されません。
例を挙げてください:
特定のフロイド実装アルゴリズムは次のとおりです[Java]プレーンコピーを表示
パッケージcom.blyang; Public Class Floyd {int [] [] Matrix; char []ノード;プライベートファイナル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]; //(int i = 0; i <nodes.length; i ++){for(int j = 0; j <nodes.length; j ++){for(int j = 0; j ++){distance [i] [j] = matrix [i] [j]; }} //ループ(int k = 0; k <nodes.length; k ++)のマトリックスの値を更新します(int i = 0; i <nodes.length; i ++){for(int j = 0; j <nodes.length.length; j ++){int temp =(distanty [i] = = = = = = digations [k]? inf:距離[i] [k] +距離[k] [j]; if(distance [i] [j]> temp){distance [i] [j] = temp; }}}}} //フロイドの最短経路システムの結果を印刷します。 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"); }}}実装後、上記の図のポイントと重みについてテストが与えられます。
パッケージ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(); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。