組合せとグラフの理論(塩田)第13回 (3) 最大フロー・最小カット定理
最大フロー・最小カット定理
そしていよいよ、驚くべき定理です。
Th.8(最大フロー・最小カット定理) N の最大フロー φ と最小カット K=(S,¯S) は必ず
( φ の値 ) =Ψ(K)
を満たす。すなわち
( 最大フローの値 ) = ( 最小カットの容量 )
が成り立つ。
N′ を
前回の「残りを表すネットワーク」とし、次の定理と一緒に証明しましょう。
Th.9(前回の Th.11) ネットワーク N=(D,Ψ) のフロー φ が最大フローであることと、
N′ が増加道を持たないことが同値である。
Th.9 の証明 ⇒) は前回示しました。逆に、
N′ が増加道を含まないと仮定して、
φ が最大フローであることを導きましょう。
- N′ において入口 v から到達可能な頂点全ての集合を S と置きます。
もちろん v∈S であり、また N′ には増加道が無いので w∉S ですから K=(S,¯S) は N のカットになります。
- a=xy∈K=(S,¯S) を任意に取ります。
もし Ψ′(a)>0 であれば、N′ の中の v-x 道と a=xy をつなげば v-y 道が作れるので y∈¯S であることに矛盾します。
従って Ψ′(a)=0 でなければなりません。
- N′ の作り方から
Ψ′(a)=Ψ(a)−φ(a)+φ(a−1)
ですが、フローの条件より φ(a)≦Ψ(a), φ(a−1)≧0 ですから、2° により
φ(a)=Ψ(a) かつ φ(a−1)=0 が言えます。
a−1 は (¯S,S) の弧ですから、結局
- K=(S,¯S) の全ての弧 a に対して φ(a)=Ψ(a)
- (¯S,S) の全ての弧 a に対して φ(a)=0
であることがわかりました。
- 3° と Th.5 より ( φ の値 ) =Ψ(K) となり、
Th.7 より φ は最大フローです。同時に Th.8 も証明できました。(証明終)
Rem.10 最大フロー φ に対しては
( φ の値 ) =Ψ(K)
を満たすカット K が必ず存在します。
もしそのような K が上手く見つかれば、N′ を作らなくても φ が最大フローであることが言えます。
比較的小さいグラフで最大フローの手計算をするときにはしばしば有効な手段です。
最大フロー・最小カットの例
Ex.11(教科書 p.183)
N :
の最大フローは
φ :
でした。
Th.5 の等号条件をヒントに対応する最小カット
K を探すと次の赤い弧たちがそうです。
記号で書くと、
S={v,x,y,z},
¯S={w} として
K=(S,¯S) になります。
また
も最小カットです。こちらは
S={v,x,y},
¯S={w,z} の場合です。
Rem.12 「Def.1 のカット」は「教科書のカット」のうち極小なものを指しますので、
Th.7, Th.8 は「教科書のカット」の意味でも成立しています。