FloyedアルゴリズムをMATLABで実装する方法

フロイド法は、グラフ内における任意の2点間の最短パスを求めるために使用される。MATLABでフロイド法を実装するには以下のコードを使用できる。

function dist = floyd(adjMatrix)
n = size(adjMatrix, 1);
dist = adjMatrix;
for k = 1:n
for i = 1:n
for j = 1:n
if dist(i, j) > dist(i, k) + dist(k, j)
dist(i, j) = dist(i, k) + dist(k, j);
end
end
end
end
end

隣接行列であるadjMatrixと、各ノード間の最小パス距離を表す行列distを用いて、すべてのノードを走査して最短パス距離を徐々に更新していきます。

  1. 初期化時のdist行列は隣接行列とする。
  2. すべてのノードを中継ノードとして個別に走査する。
  3. 2つのノードiとjについて、中間ノードkを通る方が経路が短くなる場合、dist(i, j)の値を更新する。
  4. 最終的に得られるdist行列は、任意の2点間の最短経路距離となります。

経路が存在しないノード間の距離は、無限または適切な値を設定することが重要です。

bannerAds