MATLABによる最小全域木の生成法
MATLABではgraphminspantree関数を使って最小全域木を計算できます。
graphminspantree関数の呼び出し形式は
[T , pred] = graphminspantree(G)
Gはグラフのつながりや重みを表す疎行列または重み付き隣接行列,Tは最小生成木の隣接行列,predは最小生成木の親行列です。
最小生成木の解き方のサンプルコードを示します。
加重隣接行列を作成します。
G = [[0, 2, 0, 6, 0], [2, 0, 3, 8, 5], [0, 3, 0, 0, 7], [6, 8, 0, 0, 9], [0, 5, 7, 9, 0]]
最小生成木を求めよ
[T, pred] = graphminspantree(sps(G));
最小生成木の隣接行列を出力する
disp(T);
結果は出ました。
0 0 2 0 6
ネイティブに日本語で言い換えると、
0 3 0 0 7
0 0 0 0 0
本来は5時間、7時間、5時間、7時間と各時間が交互に繰り返されるものだった
非ゼロの要素は最小生成木の辺、ゼロの要素は最小生成木に含まれない辺を表す。