フロイドのアルゴリズムテンプレート - 詳細

 

マップはする権利がありません。

パスが存在する一つの頂点から他の頂点にした場合、パスの長さは、経路上の頂点の数に等しいされる経路上のエッジの数がデクリメントされると言われています。

一つの頂点から他の頂点にあるので、各パスは異なっていてもよく、それを通してエッジの数複数の経路が存在してもよい、すなわち、異なる経路長(すなわち、エッジの最小数の後に)我々は、最短経路の経路長が呼び出される有します経路長又は最短距離の経路長と呼ばれる最短経路、。

 

図加重用語の場合:

経路長は、通常、前記テープ経路または右経路長の一方の側で定義されたパスの重みの和であり、経路の側重量の全てを考慮する。

 複数のパス、パスを最短経路と呼ばれる権利を有する最短経路長とすることができる、経路長(重みの合計)は、目的地までの最短距離またはソースからの最短経路長と呼ばれます。

 

 

フロイドのアルゴリズム

フロイドのアルゴリズムは、(フロイド・ウォーシャル  アルゴリズム)もフロイドとしても知られているアルゴリズムは、補間点の方法は、我々は正確に処理することができ、重み付けされたグラフに示された頂点間の最短経路を解決するためのアルゴリズムである有向グラフのまたは負の重み最短問題をルーティングするだけでなく、送信された図の閉鎖を計算するために使用されます。1978年に創始者の一人、へのアルゴリズム名チューリング賞受賞者、スタンフォード大学でコンピュータサイエンスの教授ロバート・フロイドの名。

範囲:負のサイクルになることはできません、右側が正または負であり得る、任意の2点間の最短経路回アルゴリズムを実行することによって得ることができます。

 

長所と短所:

フロイドのアルゴリズムは、APSP(AllPairsShortestPaths)に適しており、それは動的プログラミングアルゴリズム、最良、緻密図右エッジ効果が正または負することができます。V | |このアルゴリズムは、3重ループ構造がコンパクトであるため、緻密な図のに対して、効率が行うよりも高く、簡単かつ有効である時間ダイクストラ法

利点は:理解容易に、任意の2つのノード間の最短距離を計算することができ、簡単なコード

短所:時間の複雑さは、大量のデータに適した、比較的高いものではありません。

时间复杂度:O(n^3);空间复杂度:O(n^2);

任意节点i到j的最短路径两种可能:

  1. 直接从i到j;
  2. 从i经过若干个节点k到j。

map(i,j)表示节点i到j最短路径的距离,对于每一个节点k,检查map(i,k)+map(k,j)小于map(i,j),如果成立,map(i,j) = map(i,k)+map(k,j);遍历每个k,每次更新的是除第k行和第k列的数。

步骤:

第1步:初始化map矩阵。
矩阵中map[i][j]的距离为顶点i到顶点j的权值;

如果i和j不相邻,则map[i][j]=∞。

如果i==j,则map[i][j]=0;                                          
第2步:以顶点A(假设是第1个顶点)为中介点,若a[i][j] > a[i][1]+a[1][j],则设置a[i][j]=a[i][1]+a[1][j]。

无向图构建最短路径长度邻接矩阵:

 

 

 

 

核心代码:

有向图构建最短路径长度邻接矩阵:

步骤:

 

 

 

 

 

 

 

 

 

 

核心代码:

おすすめ

転載: www.cnblogs.com/FengZeng666/p/11243714.html