最大フロー最小カット定理は、最大フロー問題に関する定理である。
この定理は、「最大フローと最小カットの容量は等しい」ということを示す。
目次
- 関連
- 証明
証明
前提
最大フロー問題においては、始点(source)と終点(sink)以外のノードでは、流入量=流出量という条件を満たす。
カットとは
カットとは、ひとつのノードの集合(グラフ)を、ノードsを含む集合Sとノードtを含む集合Tに分割することである。
ここで、ノードsは始点、ノードtは終点を示す。
カットの組み合わせは、となる。Vはノードの数を示す。
下の図が具体例である。
カットの容量とは
カットの容量とは、カットに接するある方向のエッジの容量の和である。2つの方向があるので、ふたつ存在する。
上の図を用いて説明する。
エッジに書かれてる数字は、そのエッジに流すことのできる最大値(容量)を示す。
集合Sから集合Tへのエッジの容量の和をとし、集合Tから集合Sへのエッジの容量の和を
とする。
SからTへ向かうエッジは2本あるので、それの和をとると、となる。
TからSへ向かうエッジは2本あるので、それの和をとると、となる。
カットの容量とフローの関係
フローは、ノードsからの流出量またはノードtへの流入量と等しい。
つまり、フローはノードsからノードtへの流量になる。
集合Sからの流出量または集合Tへの流入量を、集合Tからの流出量または集合Sへの流入量を
とする。
以下の図が具体例である。
前提より、s,t以外のノードでは流入量=流出量という条件を満たすので、フローは集合Sから集合Tへの流量に等しくなる。
フローは必ず正の整数になるので、
よって、
エッジの容量を超えて、流すことはできないので
最小カットと最大フローの関係
最小カットとは、が最小となるカットのことである。
フローは、カットに依存しないので、どのカットにおいてもは成り立つ。
つまり、最小カットにおいても、
は成り立つ。
これは、フローにおいての上界を、カットにおいての下界を示す。
よって、が存在するなら、その
は最大フローとなる。
また、となるカットは、最小カットであるといえる。
の存在
ここで、フォード-ファルカーソンにより、求まる残余ネットワークに注目する。
このアルゴリズムにより、sからtへのパスが存在しない残余ネットワークが求まる。
sから到達可能なノードの集合をSとし、それ以外を集合Tとする。
残余ネットワークにおいてsからtへのパスが存在しないので、かつ
となる。
これについて、背理法を用いて証明する。
残余ネットワークにおける茶色のエッジは、ネットワークフローにおけるエッジの逆辺に等しい。
ここで、残余ネットワークにおいてsからtへのパスが存在しなくても、を満たすと仮定する。
ということは、集合Tから集合Sへと流れるエッジが存在するということである。ネットワークフローにおけるエッジの逆辺は残余ネットワークにおける茶色のエッジ、つまり集合Sから集合Tへのエッジに等しい。フローは集合Sから集合Tへの流量に等しくなる。よって、sからtへのパスが存在することになる。これは、仮定と矛盾する。
同様に背理法を用いて、も証明できる。
ならば、残余ネットワークにおいて集合Sから集合Tへ向かうエッジが存在することになる。これは、仮定と矛盾する。
フローの式は、
である。
この式に、、
という条件を代入すると、
となる。
つまり、となる
または
は存在する。
より、
を満たすfは最大フロー、U(S,T)となるカットは最小カットである。
そしてより、最小カットの容量と最大フローは等しい。