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を用いて、すべてのノードを走査して最短パス距離を徐々に更新していきます。
- 初期化時のdist行列は隣接行列とする。
- すべてのノードを中継ノードとして個別に走査する。
- 2つのノードiとjについて、中間ノードkを通る方が経路が短くなる場合、dist(i, j)の値を更新する。
- 最終的に得られるdist行列は、任意の2点間の最短経路距離となります。
経路が存在しないノード間の距離は、無限または適切な値を設定することが重要です。