組合せとグラフの理論(塩田)第8回 (4) 最小連結子問題
最小連結子問題の問題設定
最小連結子問題 連結な重み付きグラフ G において、重み最小の全域木 T を求めよ。
※ コンピュータ間のケーブルの敷設コストが重みであれば、
最小コストでとりあえず通信ができる状態にしよう、ということです。
クラスカル法
この問題も決定版のアルゴリズムがあります。
Algorithm 14(クラスカル法)
- 入力:連結な重み付きグラフ G
- 出力:重み最小の全域木 T
- ( 辺集合として ) T の初期値は空集合 ∅ とする。
- n= ( G の頂点数 ), j=1 とおく。
- T に付加しても閉路を作らない辺のうち、重み最小のものを ej とする。
- T に ej を付加する。
- j←j+1.
- j=n ならば T を出力して終了。そうでなければ 3°に戻る。
クラスカル法の証明
T の重み
w(T) の最小性を示しましょう。
- S を G の任意の全域木
- ek を、S に含まれない T の辺のうち番号最小のもの
とします。
Ex.15 の場合、
S を次の全域木とすると
ek=e2 になります。
 | |  |
T | | S |
- S に ek を付加したグラフ Stmp には閉路 C が 1 つだけあります。( 第6回 Th.5 )
 | |  |
Stmp | | C |
- T は閉路を含まないので、T に含まれない C の辺 f が存在します。
- Stmp から f を除去したグラフを S′ とおくと、これは再び G の全域木になります。
 |
S′ |
- S′ は e1, e2, ⋯, ek を含むことに注意してください。
- Alg.12 3°より w(ek)≦ ですから、
w(S') = w(S) + w(e_k) - w(f) \leqq w(S)
- S から S' を作った操作を繰り返すと全ての e_j を含む T ができるので、
w(T) \leqq \cdots \leqq w(S') \leqq w(S)
従って
w(T) が重み最小となります。(証明終)