最大フロー最小カット定理 (さいだいフローさいしょうカットていり、英 : Max-flow min-cut theorem )は、フローネットワーク における最大フロー問題 と呼ばれる最適化問題 に関する定理である。メンガーの定理 から導出される。その内容は次の通り。
「最大フローは最小カット の容量に等しい」
平たく言えば、ネットワークの最大流量はボトルネック に左右されることを意味している。任意の2点間で、一方から他方へ流れる物量は、その経路内で最も弱い部分によって制限される。
定義
G
(
V
,
E
)
{\displaystyle G(V,E)}
が有限の有向グラフ であり、各エッジ(枝)
(
u
,
v
)
{\displaystyle (u,v)}
には容量
c
(
u
,
v
)
{\displaystyle c(u,v)}
(非負実数 )があるとする。さらに、始点となるノード
s
{\displaystyle s}
と、終点となるノード
t
{\displaystyle t}
を特に指定しておく。
カット (cut)とは、ノード群を2つの集合
S
{\displaystyle S}
と
T
{\displaystyle T}
に分割し、
S
{\displaystyle S}
には
s
{\displaystyle s}
が含まれ、
T
{\displaystyle T}
には
t
{\displaystyle t}
が含まれるようにすることを言う。従って、可能なカットの種類は以下のようになる。
2
|
V
|
−
2
{\displaystyle 2^{|V|-2}\,}
あるカット
(
S
,
T
)
{\displaystyle (S,T)}
の容量とは、ネットワークを分断しているカットを表す線と交わっているエッジの容量の合計(ただし、
S
{\displaystyle S}
から
T
{\displaystyle T}
に向かっているもの)であり、次のように表される。
c
(
S
,
T
)
=
∑
u
∈
S
,
v
∈
T
|
(
u
,
v
)
∈
E
c
(
u
,
v
)
{\displaystyle c(S,T)=\sum _{u\in S,v\in T|(u,v)\in E}c(u,v)}
,
ここで以下の3つの条件は等価である。
f
{\displaystyle f}
は
G
{\displaystyle G}
における最大フローである。
残余ネットワーク(residual network)
G
f
{\displaystyle G_{f}}
は増加道(augmenting path)を含まない。
あるカット
(
S
,
T
)
{\displaystyle (S,T)}
について
|
f
|
=
c
(
S
,
T
)
{\displaystyle |f|=c(S,T)}
が成り立つ。
証明の概要: もし増加道があれば、それを使ってより大きなフローを得ることができるため、最大フローとは呼べなくなるし、逆も成り立つ。増加道がない場合、残余ネットワーク内で
s
{\displaystyle s}
から到達可能なノード群
S
{\displaystyle S}
と到達不可能なノード群
T
{\displaystyle T}
に分けることができる。すると、
c
(
S
,
T
)
{\displaystyle c(S,T)}
は必ず 0 となる。さもなくば、
c
(
u
,
v
)
>
0
{\displaystyle c(u,v)>0}
であるようなエッジ
(
u
,
v
)
{\displaystyle (u,v)}
が存在することになる。しかし、その場合
v
{\displaystyle v}
は
s
{\displaystyle s}
から到達可能であり、
T
{\displaystyle T}
に存在することは定義上あり得ない。
特にここから
m
a
x
f
l
o
w
≥
m
i
n
c
u
t
{\displaystyle \mathrm {max\ flow} \geq \mathrm {min\ cut} }
が証明される。なぜなら、最小カットは
m
a
x
f
l
o
w
{\displaystyle \mathrm {max\ flow} }
に対応するカットと等しいかそれより小さいからである。
次に
m
i
n
c
u
t
≥
m
a
x
f
l
o
w
{\displaystyle \mathrm {min\ cut} \geq \mathrm {max\ flow} }
も成り立つ。グラフ
G
{\displaystyle G}
のフローが
f
{\displaystyle f}
であるとき、容量
c
{\displaystyle c}
のエッジ
(
u
,
v
)
{\displaystyle (u,v)}
を取り除くと、その容量
c
{\displaystyle c}
を使えなくなるので、
f
{\displaystyle f}
は少なくとも
f
−
c
{\displaystyle f-c}
となる。しかしここで最小カット
c
0
{\displaystyle c0}
でカットを跨ぐ全エッジを取り除くと、フローは
0
{\displaystyle 0}
となってしまう。最初のフローは
f
{\displaystyle f}
であった。従って、任意のフロー
f
{\displaystyle f}
について
f
−
c
0
<=
0
{\displaystyle f-c0<=0}
が成り立ち、特に
f
{\displaystyle f}
が最大フローであってもそれは変わらない。従って、
f
<=
c
0
{\displaystyle f<=c0}
となる。
例
最大フローのネットワーク。3つの最小カットがある。
右図はノード
V
=
{
s
,
o
,
p
,
q
,
r
,
t
}
{\displaystyle V=\{s,o,p,q,r,t\}}
からなるネットワークであり、始点
s
{\displaystyle s}
から 終点
t
{\displaystyle t}
への総流量は 5 で、これがこのネットワークの最大である。
このネットワークには3つの最小カットが存在する。
カット
容量
S
=
{
s
,
p
}
,
T
=
{
o
,
q
,
r
,
t
}
{\displaystyle S=\{s,p\},T=\{o,q,r,t\}}
c
(
s
,
o
)
+
c
(
p
,
r
)
=
3
+
2
=
5
{\displaystyle c(s,o)+c(p,r)=3+2=5}
S
=
{
s
,
o
,
p
}
,
T
=
{
q
,
r
,
t
}
{\displaystyle S=\{s,o,p\},T=\{q,r,t\}}
c
(
o
,
q
)
+
c
(
p
,
r
)
=
3
+
2
=
5
{\displaystyle c(o,q)+c(p,r)=3+2=5}
S
=
{
s
,
o
,
p
,
q
,
r
}
,
T
=
{
t
}
{\displaystyle S=\{s,o,p,q,r\},T=\{t\}}
c
(
q
,
t
)
+
c
(
r
,
t
)
=
2
+
3
=
5
{\displaystyle c(q,t)+c(r,t)=2+3=5}
(
o
,
q
)
{\displaystyle (o,q)}
と
(
r
,
t
)
{\displaystyle (r,t)}
が飽和しているにも関わらず、
S
=
{
s
,
o
,
p
,
r
}
,
T
=
{
q
,
t
}
{\displaystyle S=\{s,o,p,r\},T=\{q,t\}}
は最小カットではないことに注意されたい。これは残余ネットワーク(residual network)
G
f
{\displaystyle G_{f}}
において、エッジ (r,q) の容量が
c
f
(
r
,
q
)
=
c
(
r
,
q
)
−
f
(
r
,
q
)
=
0
−
(
−
1
)
=
1
{\displaystyle c_{f}(r,q)=c(r,q)-f(r,q)=0-(-1)=1}
であるためである。
歴史
この定理は1956年 、P. Elias、A. Feinstein、クロード・シャノン によって証明された。また、L.R. Ford, Jr. と D.R. Fulkerson も同じ年に独自に証明した。最大フローを求める問題は線形計画問題 の特殊形式であり、最大フロー最小カット定理は線形計画の双対性定理 の特殊ケースと見ることもできる。
関連項目
外部リンク
参考文献
P. Elias, A. Feinstein, and C. E. Shannon . Note on maximum flow through a network. IRE Transactions on Information Theory IT-2, 117--119, 1956.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest , and Clifford Stein. Introduction to Algorithms , Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7 . Chapter 26: Maximum Flow, pp.643–700.