6. 2014/11/20ICPC練習会
プリム (Prim) 法
• i 個の頂点を持つ部分全域木 Ti から i+1 個の頂点を持つ
部分全域木 Ti+1 を構築
• i+1 個目の頂点を選ぶ戦略は貪欲法
• Ti = (Vi, Ei) とする
• Ti と V Ti を結ぶ辺の中で最小コストの辺を追加し、
V Ti 側の端点を追加
684
6
4
3
3
4
2
2
1
3
84
6
4
3
3
4
2
2
1
3
7. 2014/11/20ICPC練習会
プリム法の正当性
• Ti と V Ti を結ぶ最小コストの辺をeとする
• eを含まない最小全域木 T' が存在すると仮定する
• T' には Ti と V Ti を結ぶ e 以外の辺 e' が必ず存在
• e' を e に置き換えても全域木
• e のコストは e' 以下 → e に置き換えても最小全域木
7
Ti V Tie
e'
Ti V Tie
e'
12. 2014/11/20ICPC練習会
クラスカル法の正当性
• プリム法と基本的に同様
• 辺 e = (u, v) を追加する前の状態が最小全域木の部分グラフで
あるとする
• e を加えてサイクルができない場合:
• eを加えずに u の連結成分 と v の連結成分を結ぶ辺 e' が
以降に存在すれば全域木となるが,e' のコストは e 以上
• e を加えてサイクルができる場合:
• すでに u, v は連結であり,できるサイクル中のどの辺もコ
ストが e 以下 → サイクルを e で切断するのがコスト最小
12
23. 2014/11/20ICPC練習会
おまけ:行列木定理
• 無向グラフの全域木の個数がわかる
23
無向グラフ G = (V, E) のラプラシアン行列 L とは,
・Li, j = -1 (i j かつ e = (i, j) E)
・Li, j = 0 (i j かつ e = (i, j) E)
・Li, j = di (i = j, ただし di は i の次数)
定義
無向グラフ G の全域木の個数は,G のラプラシアン行列
L の任意の余因子に等しい (余因子はすべて等しい)
定理
24. 2014/11/20ICPC練習会
行列木定理: 例
• G の ラプラシアン行列 L は,
• L の (1,2)-余因子は
24
L =
0
B
B
@
2 1 1 0
1 2 0 1
1 0 2 1
0 1 1 2
1
C
C
A
eL(1, 2) =
1 0 1
1 2 1
0 1 2
= 4
1
2
3
4
G:
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
全域木
25. 2014/11/20ICPC練習会
全域木関連・その他話題
• 有向全域木
• 有向グラフ G において,根となる頂点 r が与えら
れたとき,r から全ての頂点に到達可能な G の非
巡回部分グラフを有向全域木と呼ぶ
• シュタイナー木
• 無向グラフ G = (V, E) と V の部分集合 S について,
S をすべて含む連結で非巡回な部分グラフをシュタ
イナー木と呼ぶ
25