1
アルゴリズムとデータ
構造
第12回演習問題解説
2
補題1の証明
問題 最大フロー最小カットの定理を証明せよ。
補題1 任意のフローf、任意のカット(S,V-S)に対し、
F( f )
f (u, v )
( u,v )E( S,V S )
f (u, v )
---------------------------------①
( u,v )E( V S,S )
が成り立つ。ただし、F(f)はフローfの流量とし、E(S,T)=E∩(S×T)とする。
(証明) Sのサイズに関する数学的帰納法で証明する。
Sの要素数が1のとき、つまりS={s}のとき
f (u, v )
( u,v )E( S,V S )
f (u, v )
( u,v )E( V S,S )
f (u, v ) f (u, v ) F(f )
( u,v )OUT ( s )
( u,v )IN( s )
となり、①が成り立つ。
Sの要素数がkのとき①が成り立つとする。
Sの要素数がk+1のとき
f (u, v )
( u,v )E( S,V S )
f (u, v )
( u,v )E( V S,S )
f (u, v ) f (u , v )
( u,v )E( S { u0 },V S )
f (u, v )
( u,v )E( S { u0 },V S )
vV S
0
( u,v )E ( V S,S { u0 })
vV S
0
f (u, v ) f (u , v ) f (v,u )
( u,v )E( V S,S { u0 })
f (u, v )
f (u, v ) f (v,u )
vS { u 0 }
0
vS { u0 }
f (u, v )
( u,v )E( S { u0 },V ( S { u0 })) ( u,v )E( V ( S { u0 }),S { u0 })
ただし、u0はS-{s}の任意の要素とする。よってSの要素数がk+1のときも成り立つ。 □
0
補題2とヒント
3
補題2 fが最大フロー⇔残余グラフにおいてsからtへの路が存在しない。
[最大フロー最小カットの定理の証明のヒント]
最大フローをf*、最小カットを(S*,V-S*)とし、最小カット値をC(S*,V-S*)とし
と
F( f *) C(S*, V S*)
F( f *) C(S*, V S*)
を示す。
また、補題2より、フローf*に対する残余グラフにおいてsから到達可能な頂点の集合
をS0とすれば、以下が成り立つことを使う。
c(u, v ) (u, v ) E(S0 , V S0 )
f * (u, v )
(u, v ) E( V S0 , S0 )
0
演習問題解答
4
(最大フロー最小カットの定理の証明)
最大フローをf*、最小カットを(S*,V-S*)とし、最小カット値をC(S*,V-S*)とする。
補題1より
F( f *)
f * (u, v )
( u,v )E( S *,V S *)
f * (u, v )
( u,v )E( V S *,S *)
c(u, v ) C(S*, V S*)
( u,v )E( S *,V S *)
また、補題2より、フローf*に対する残余グラフにおいてsから到達可能な頂点の集合
をS0とすれば、以下が成り立つことが示せる。
c(u, v ) (u, v ) E(S0 , V S0 )
f * (u, v )
(u, v ) E( V S0 , S0 )
0
よって
F(f *)
f * (u, v)
( u,v )E( S0 ,V S0 )
f * (u, v)
( u,v )E( V S0 ,S0 )
したがって、F(f*)=C(S*,V-S*)が成り立つ。
c(u, v) C(S*, V S*)
( u,v )E( S0 ,V S0 )
□
© Copyright 2026 ExpyDoc