コンテンツにスキップ

連結度とネットワークフロー:Menger の定理・最大フロー最小カット定理

対象読者: 本テーマ第 1〜2 章(道・閉路・木、マッチングと Hall の定理・König の定理)の内容を学んだ人。線形計画や位相の知識は仮定しません。

前提となる記事:道・閉路・木:Euler 回路と Hamilton 閉路、マッチング:Hall の結婚定理・König の定理・Tutte の定理

生 Markdown

ある 2 つの拠点の間の通信を完全に断つには、途中の中継点をいくつ壊せばよいでしょうか。逆に、中継点を共有しない経路は何本取れるでしょうか。この章では、グラフのつながりの強さを数で測り、「経路の本数の最大」と「壊す個数の最小」がいつも一致することを、水を流すネットワークの話に置き換えて示します。読み終えると、グラフの頑丈さを数で言い表し、最大フロー最小カット定理を使って Menger の定理や Hall の定理を導けるようになります。

  • グラフの「つながりの強さ」を、頂点を何個除けば切れるか(頂点連結度 κ\kappa)と、辺を何本除けば切れるか(辺連結度 λ\lambda)で測ります。κ≤λ≤δ\kappa\le\lambda\le\delta が成り立ちます(定理 2.2)。
  • 2-連結であることは、どの 2 頂点も共通の閉路に乗ること、閉路から始めて道(耳)を次々に付け足して作れることと同値です(定理 3.2)。一般の連結グラフは、ブロックが切断点(取り除くと非連結になる頂点)で木の形につながったものです(命題 3.4)。
  • ネットワークの最大フローの流量は、最小カットの容量に等しくなります(最大フロー最小カット定理、定理 4.8)。増加道が無くなったとき、入口から増加道で届く範囲がそのまま最小カットになります。
  • 容量が整数なら、整数値の最大フローがあります(定理 4.9)。この整数性が、フローの定理を組合せ論の定理に変える鍵です。
  • Menger の定理(定理 5.4): 2 頂点を結ぶ内素な道の最大本数は、2 頂点を分離する頂点の最小個数に等しい。辺素な道と辺の除去についても同じです。頂点を 2 つに割ってフローに帰着します。
  • Menger の定理から、kk-連結グラフの任意の kk 頂点は共通の閉路に乗ること(定理 5.7)、κ≥α\kappa\ge\alpha なら Hamilton 閉路(全頂点を 1 回ずつ通る閉路)があること(定理 5.8)、そして第 2 章の Hall・König の定理(命題 6.1)が導けます。

通信網で、ある 2 つの拠点の間の通信を完全に断つには、中継点を最低いくつ壊せばよいでしょうか。逆に、互いに中継点を共有しない経路は最大で何本取れるでしょうか。経路が kk 本あれば、それぞれから中継点を 1 つずつ壊さなければならないので、壊す個数は kk 以上です。Menger の定理は、この当たり前の不等式がいつでも等号になると主張します。経路を増やせない理由は、少数の中継点というボトルネックの存在に限られるわけです。

同じ形の定理が、物を流す問題にもあります。各辺に流せる量の上限(容量)が決まったネットワークで、入口から出口へ流せる総量の最大値は、入口と出口を分ける切り口を通る容量の合計の最小値に一致します。第 2 章 の Hall の定理・König の定理も「最大 == 最小」の形でした。この章では、最大フロー最小カット定理を最初に証明し、Menger・Hall・König をその系として並べます。証明の中心にあるのは、第 2 章と同じ増加道です。

グラフの語彙は 第 1 章 に従います。アルゴリズムの実装は グラフアルゴリズム を見てください。計算量についての話は 命題 4.11 の 1 つに限ります。

定義 2.1(頂点連結度・辺連結度)↗

GG を nn 頂点のグラフとする。

  • S⊆V(G)S\subseteq V(G) は、G−SG-S が非連結になるとき分離集合という。k≥0k\ge0 に対し、n>kn>k で、かつ kk 個未満の頂点からなるどの SS についても G−SG-S が連結であるとき、GG は kk-連結であるという。GG が kk-連結であるような最大の kk を頂点連結度 κ(G)\kappa(G) という。
  • F⊆E(G)F\subseteq E(G) は、G−FG-F が非連結になるとき辺カットという。n≥2n\ge2 で、kk 本未満の辺からなるどの FF についても G−FG-F が連結であるとき、GG は kk-辺連結であるという。その最大の kk を辺連結度 λ(G)\lambda(G) という(n=1n=1 のときは λ=0\lambda=0 とする)。
  • 頂点 s,ts,t と S⊆V(G)∖{s,t}S\subseteq V(G)\setminus\{s,t\} について、ss と tt が G−SG-S の異なる連結成分に属するとき、SS は ss と tt を分離するという。辺集合についても同様に定める。

定義から、完全グラフでは分離集合がなく、n>kn>k の制約から κ(Kn)=n−1\kappa(K_n)=n-1 です。完全でないグラフでは、κ(G)\kappa(G) は分離集合の大きさの最小値です(隣接しない 2 頂点 u,vu,v に対し V(G)∖{u,v}V(G)\setminus\{u,v\} が分離集合なので、分離集合があり、その最小の大きさは n−2n-2 以下です)。どのグラフでも κ(G)≤n−1\kappa(G)\le n-1 です。連結であることは 1-連結であること(n≥2n\ge2 のとき)、切断点をもたない連結グラフ(n≥3n\ge3)が 2-連結グラフです。

定理 2.2(Whitney の不等式)✓

n≥2n\ge2 頂点のグラフ GG について

κ(G)≤λ(G)≤δ(G)\kappa(G)\le\lambda(G)\le\delta(G)

が成り立つ。

証明の方針です。λ≤δ\lambda\le\delta は、次数が最小の頂点を孤立させるだけで分かります。κ≤λ\kappa\le\lambda は、最小の辺カットを取り、その辺の端点を 1 つずつ選んで頂点の集合を作ると、辺の本数以下の大きさの分離集合になる、という対応で示します(辺が両側の全頂点を結んでいる極端な場合だけは別に数えます)。

証明(定理 2.2)

λ≤δ\lambda\le\delta. 次数が δ\delta の頂点 vv に接続する δ\delta 本の辺をすべて除くと、vv は孤立し、n≥2n\ge2 なのでグラフは非連結になります。

κ≤λ\kappa\le\lambda. GG が非連結なら κ=λ=0\kappa=\lambda=0 です。GG を連結とし、辺の数が最小の辺カット FF(∣F∣=λ|F|=\lambda)を取ります。G−FG-F の連結成分の 1 つの頂点集合を XX、X‾=V(G)∖X\overline X=V(G)\setminus X とします(どちらも空でない)。XX と X‾\overline X を結ぶ GG の辺はすべて FF に入っていなければならず、それらを除くだけで非連結になるので、FF の最小性から、FF はちょうど XX と X‾\overline X を結ぶ辺の全体です。

場合 1: XX のどの頂点も X‾\overline X のどの頂点とも隣接する. このとき λ=∣F∣=∣X∣ ∣X‾∣\lambda=|F|=|X|\,|\overline X| です。∣X∣=a|X|=a とすると a(n−a)−(n−1)=(a−1)(n−a−1)≥0a(n-a)-(n-1)=(a-1)(n-a-1)\ge0 なので、λ≥n−1≥κ\lambda\ge n-1\ge\kappa です。

場合 2: 隣接しない x∈Xx\in X、y∈X‾y\in\overline X がある.

S=(N(x)∩X‾) ∪ {u∈X∖{x}:u は X‾ に隣接点をもつ}S=\bigl(N(x)\cap\overline X\bigr)\ \cup\ \{u\in X\setminus\{x\}: u\text{ は }\overline X\text{ に隣接点をもつ}\}

と置きます。x∉Sx\notin S で、yy は xx と隣接しない X‾\overline X の頂点なので y∉Sy\notin S です。xx から yy への道は、どこかで XX から X‾\overline X へ辺 uvuv(u∈Xu\in X、v∈X‾v\in\overline X)で渡ります。u=xu=x なら v∈N(x)∩X‾⊆Sv\in N(x)\cap\overline X\subseteq S、u≠xu\ne x なら u∈Su\in S です。よってどの道も SS の頂点を通り、SS は分離集合で、κ≤∣S∣\kappa\le|S| です。

∣S∣≤∣F∣|S|\le|F| を示します。v∈N(x)∩X‾v\in N(x)\cap\overline X には辺 xv∈Fxv\in F を、u∈S∩Xu\in S\cap X には uu と X‾\overline X を結ぶ辺を 1 本選んで対応させます。前者の辺は xx を端点にもち X‾\overline X 側の端点が相異なり、後者の辺は XX 側の端点 u≠xu\ne x が相異なるので、この対応は SS から FF への単射です。よって κ≤∣S∣≤∣F∣=λ\kappa\le|S|\le|F|=\lambda です。

例 2.3(3 つの量がすべて異なる例)

2 つの K5K_5(頂点集合 XX、YY)を用意し、x∈Xx\in X と相異なる y1,y2∈Yy_1,y_2\in Y を選んで辺 xy1xy_1、xy2xy_2 を足します。xx を除くと X∖{x}X\setminus\{x\} と YY が分かれるので κ=1\kappa=1 です。辺 xy1,xy2xy_1,xy_2 を除くと非連結になるので λ≤2\lambda\le2 で、どの辺も閉路に乗る(K5K_5 の中の辺は三角形に、xy1xy_1 と xy2xy_2 は閉路 xy1y2xxy_1y_2x に乗る)ので橋はなく(命題 4.2[道・閉路・木])、λ=2\lambda=2 です。最小次数は δ=4\delta=4 です。したがって κ=1<λ=2<δ=4\kappa=1<\lambda=2<\delta=4 となり、定理 2.2 の 2 つの不等号はどちらも真の不等号になりえます。

次の例は、内周(最短の閉路の長さ)が 5 で 3-正則という性質から κ≥3\kappa\ge3 を導きます。2 個以下の頂点で分離できたと仮定し、切り離された側の頂点と分離集合をつなぐ辺の本数を 2 通りに数えて矛盾を出す、という流れです。

例 2.4(Petersen グラフでは 3 つとも 3)

Petersen グラフ(第 1 章の 例 6.12[道・閉路・木])は 3-正則で、内周は 5 です(三角形も長さ 4 の閉路も含みません)。κ≤λ≤δ=3\kappa\le\lambda\le\delta=3 なので、κ≥3\kappa\ge3 を示せば κ=λ=3\kappa=\lambda=3 です。

∣S∣≤2|S|\le2 の分離集合 SS があるとし、G−SG-S の頂点数最小の成分の頂点集合を XX とします。成分は 2 つ以上あるので ∣X∣≤(10−∣S∣)/2|X|\le(10-|S|)/2、XX は SS 以外の頂点とは XX の中でしか隣接しません。∣X∣≤5|X|\le5 ですが、∣X∣=5|X|=5 となるのは S=∅S=\varnothing で GG が非連結のときだけで、Petersen グラフは連結なので ∣X∣≤4|X|\le4 です。G[X]G[X] は連結で、内周 5 から閉路を含まないので木で、辺は ∣X∣−1|X|-1 本です。XX と SS を結ぶ辺の本数は、次数の和から

3∣X∣−2(∣X∣−1)=∣X∣+23|X|-2(|X|-1)=|X|+2

です。一方、SS の 1 頂点 ss が XX の 2 頂点 x,x′x,x' と隣接すると、xx と x′x' を結ぶ木の中の道と合わせて閉路ができ、その長さが 5 以上であるためには、木の中での距離が 3 以上でなければなりません。4 頂点以下の木でそのような対があるのは、道 P4P_4 の両端の 1 組だけです。したがって、ss が XX にもつ隣接点は、∣X∣≤3|X|\le3 なら 1 個以下、∣X∣=4|X|=4 なら 2 個以下です。XX と SS を結ぶ辺は、∣X∣≤3|X|\le3 なら ∣S∣≤2|S|\le2 本以下で ∣X∣+2≥3|X|+2\ge3 に反し、∣X∣=4|X|=4 なら 2∣S∣≤42|S|\le4 本以下で ∣X∣+2=6|X|+2=6 に反します。よって κ≥3\kappa\ge3 です。

定義 3.1(耳・耳分解)↗

HH を GG の部分グラフとする。GG の中の長さ 1 以上の道 PP で、両端点が HH の相異なる頂点であり、内部の頂点と辺が HH に属さないものを HH の耳(HH-道)という。GG の部分グラフの列 G0⊆G1⊆⋯⊆Gr=GG_0\subseteq G_1\subseteq\cdots\subseteq G_r=G で、G0G_0 が閉路、各 GiG_i が Gi−1G_{i-1} にその耳を 1 本足したものであるとき、これを GG の耳分解という。

定理 3.2(2-連結グラフの特徴づけ)✓

n≥3n\ge3 頂点のグラフ GG について、次は同値である。

  1. GG は 2-連結である。
  2. GG のどの 2 頂点も、共通の閉路の上にある。
  3. GG は耳分解をもつ。
証明(定理 3.2)

(1)⇒(2)(1)\Rightarrow(2). 相異なる 2 頂点 u,vu,v を取り、距離 d(u,v)d(u,v) についての帰納法(定理 3.2[証明の技術])で、uu と vv を通る閉路があることを示します。

d(u,v)=1d(u,v)=1 のとき. 辺 uvuv が橋でないことを示せば、命題 4.2[道・閉路・木] から uvuv を通る閉路があります。橋だとすると、G−uvG-uv は uu を含む成分 XX と vv を含む成分 YY に分かれます。n≥3n\ge3 なので、たとえば XX に uu 以外の頂点 ww があります。G−uG-u の中で ww から vv への道は辺 uvuv を使えないので G−uvG-uv の中の道ですが、ww と vv は G−uvG-uv の異なる成分に属します。よって G−uG-u は非連結で、2-連結性に反します。

d(u,v)=k≥2d(u,v)=k\ge2 のとき. uu から vv への最短の道で vv の直前の頂点を ww とすると、d(u,w)=k−1d(u,w)=k-1 です。帰納法の仮定から uu と ww を通る閉路があり、これは uu から ww への、内部の頂点を共有しない 2 本の道 P,QP,Q に分かれます。G−wG-w は連結なので、ww を通らない uu から vv への道 RR があります。RR の頂点のうち P∪QP\cup Q の上にあるもので、RR に沿って最も vv に近いものを zz とします(uu がそうなので存在し、z≠wz\ne w です)。zz が PP の上にあるとしてかまいません。このとき

u → P  z → R  v ⟶ w → Q を逆向きに  uu\ \xrightarrow{\ P\ }\ z\ \xrightarrow{\ R\ }\ v\ \longrightarrow\ w\ \xrightarrow{\ Q\text{ を逆向きに}\ }\ u

は閉路です。実際、uPzuPz と QQ は uu しか共有せず(z≠wz\ne w)、zRvzRv の zz より後の頂点は P∪QP\cup Q の上になく、辺 vwvw は GG の辺です(z=vz=v の場合は zRvzRv が 1 点になるだけです)。この閉路は uu と vv を通ります。

(2)⇒(1)(2)\Rightarrow(1). n≥3n\ge3 です。頂点 vv を除いたとき、残りの 2 頂点 x,yx,y は共通の閉路の上にあり、閉路は xx と yy を結ぶ内部の頂点を共有しない 2 本の道に分かれます。vv はその高々一方にしか乗らないので、G−vG-v に xx から yy への道が残ります。同じ理由で GG 自身も連結です。よって GG は 2-連結です。

(1)⇒(3)(1)\Rightarrow(3). GG は 2-連結なので δ(G)≥2\delta(G)\ge2 です(定理 2.2)。命題 3.1[道・閉路・木] から GG は閉路を含みます。閉路から始めて耳を足していくことで得られる GG の部分グラフのうち、頂点数と辺数の和が最大のもの HH を取ります。H=GH=G を示します。

まず、両端が HH の頂点である GG の辺 xyxy は、すべて HH の辺です。そうでなければ xyxy は長さ 1 の耳で、HH に足せて最大性に反します。次に、V(H)≠V(G)V(H)\ne V(G) とします。GG は連結なので、v∈V(H)v\in V(H)、w∉V(H)w\notin V(H) である辺 vwvw があります。G−vG-v は連結なので、ww から H−vH-v の頂点(HH は閉路を含むので存在します)への道が G−vG-v にあります。その道を ww からたどって最初に出会う HH の頂点を uu(u≠vu\ne v)とし、そこまでの部分を P′P' とすると、辺 vwvw に P′P' をつないだ道は、両端 v≠uv\ne u が HH にあり内部が HH の外にある耳です。これも最大性に反します。よって V(H)=V(G)V(H)=V(G) で、最初に示したことから E(H)=E(G)E(H)=E(G) です。

(3)⇒(1)(3)\Rightarrow(1). 閉路グラフは、1 頂点を除くと道になるので 2-連結です。HH が 2-連結で、H′H' が HH に耳 PP(両端 a≠ba\ne b)を足したグラフなら、H′H' も 2-連結であることを示します。H′H' から頂点 vv を除きます。v∈V(H)v\in V(H) なら、H−vH-v は連結で、PP の内部の頂点は PP に沿って a,ba,b のうち vv でないほうへ届きます。vv が PP の内部の頂点なら、HH は連結で、PP の残りの頂点は aa か bb へ届きます。どちらの場合も H′−vH'-v は連結です。耳の本数についての帰納法で、耳分解をもつグラフは 2-連結です。

2-連結でない連結グラフは、切断点で「2-連結な部分」に分かれます。

定義 3.3(ブロック・ブロック木)↗

グラフ GG の連結な部分グラフで、それ自身が切断点をもたないもののうち、包含関係について極大なものを GG のブロックという。連結グラフ GG に対し、ブロックの全体 B\mathcal B と GG の切断点の全体 C\mathcal C を頂点集合とし、v∈V(B)v\in V(B) のとき v∈Cv\in\mathcal C と B∈BB\in\mathcal B を結んだ二部グラフを GG のブロック木(ブロックグラフ)という。

ブロックは、2-連結な部分グラフで極大なもの、橋(とその両端点)、孤立点のどれかです。

命題 3.4(ブロック木は木である)✓

GG を連結グラフとする。

  1. 相異なる 2 つのブロックは、高々 1 頂点しか共有しない。各辺はちょうど 1 つのブロックに属し、各閉路は 1 つのブロックに含まれる。
  2. 頂点 vv が 2 つ以上のブロックに属することと、vv が GG の切断点であることは同値である。
  3. GG のブロック木は木である。

証明の進め方です。まず、ブロックどうしの重なりは切断点に限られること(1 と 2)を示し、そのうえで、ブロックと切断点を並べたものが連結で閉路を含まない、つまり木になること(3)を示します。

証明(命題 3.4)

切断点をもたない連結な部分グラフ(1 頂点、1 辺とその両端、閉路など)は、それを含むそのような部分グラフで極大なもの、すなわちブロックに含まれます。この事実を繰り返し使います。

1. ブロック B1≠B2B_1\ne B_2 が 2 頂点以上を共有するとします。H=B1∪B2H=B_1\cup B_2 から頂点 vv を除くと、B1−vB_1-v と B2−vB_2-v はどちらも連結で(BiB_i は切断点をもたない)、共有する頂点が少なくとも 1 つ残るので、H−vH-v は連結です。HH 自身も連結です。よって HH は切断点をもたない連結な部分グラフで、B1B_1 を真に含みます(極大なものどうしなので B2⊈B1B_2\not\subseteq B_1)。これは B1B_1 の極大性に反します。

各辺は(その両端とともに)あるブロックに含まれ、2 つのブロックに含まれると両端の 2 頂点が共有されるので、ちょうど 1 つのブロックに属します。閉路は切断点をもたない連結な部分グラフなので、あるブロックに含まれます。

2. 2 つのブロックに属する頂点は切断点. v∈V(B1)∩V(B2)v\in V(B_1)\cap V(B_2)、B1≠B2B_1\ne B_2 とします。BiB_i が vv だけからなるなら、もう一方に含まれて極大でないので、BiB_i は vv の隣接点 xix_i を含みます。1 から x1≠x2x_1\ne x_2 です。vv が切断点でなければ、G−vG-v に x1x_1 から x2x_2 への道があり、辺 x2vx_2v、vx1vx_1 と合わせて閉路 CC になります。CC はあるブロック BB に含まれます。BB と B1B_1 は 2 頂点 v,x1v,x_1 を共有するので B=B1B=B_1、同様に B=B2B=B_2 となり、B1≠B2B_1\ne B_2 に反します。

切断点は 2 つのブロックに属する. vv が切断点なら、G−vG-v は 2 つ以上の成分をもちます。GG は連結なので、どの成分にも vv の隣接点があります。異なる成分から隣接点 x,yx,y を取ります。辺 vxvx と vyvy が同じブロック BB に属するとすると、B−vB-v は連結で x,yx,y を含むので、xx と yy が G−vG-v の同じ成分に属することになり矛盾です。よって vv は 2 つの異なるブロックに属します。

3. 連結であること. 切断点は 2 からあるブロックと結ばれているので、2 つのブロック B,B′B,B' がブロック木の中でつながることを示せば十分です。x∈V(B)x\in V(B)、y∈V(B′)y\in V(B') を取り、GG の中の道 x=p0p1⋯pk=yx=p_0p_1\cdots p_k=y を取ります(k=0k=0 のときは、B=B′B=B' であるか、xx が 2 つのブロックに属する切断点で B,x,B′B,x,B' がブロック木の歩道です)。辺 pi−1pip_{i-1}p_i の属するブロックを BiB_i とします。Bi≠Bi+1B_i\ne B_{i+1} なら、両方に属する pip_i は 2 から切断点で、ブロック木で BiB_i と Bi+1B_{i+1} の両方と隣接します。BB と B1B_1(ともに xx を含む)、BkB_k と B′B'(ともに yy を含む)についても同じです。よって BB から B′B' への歩道があります。

閉路を含まないこと. ブロック木が閉路 B1v1B2v2⋯BkvkB1B_1v_1B_2v_2\cdots B_kv_kB_1(k≥2k\ge2、ブロックも切断点も相異なる、vi∈V(Bi)∩V(Bi+1)v_i\in V(B_i)\cap V(B_{i+1})、添字は kk を法とする)を含むとします。H=B1∪⋯∪BkH=B_1\cup\cdots\cup B_k から頂点 vv を除きます。各 Bi−vB_i-v は連結です。Bi−vB_i-v と Bi+1−vB_{i+1}-v は、v≠viv\ne v_i である限り viv_i を共有します。vv は相異なる v1,…,vkv_1,\dots,v_k の高々 1 つとしか一致しないので、円環状に並んだ kk 個のつなぎ目のうち切れるのは高々 1 か所で、H−vH-v は連結です。HH も連結です。したがって HH は切断点をもたない連結な部分グラフで、B1B_1 を真に含み、B1B_1 の極大性に反します。

定義 4.1(有向グラフ・ネットワーク・フロー)↗

有向グラフ D=(V,E)D=(V,E) は、有限集合 VV と、相異なる頂点の順序対 (u,v)(u,v)(uu から vv への有向辺)の集合 EE からなる。(u,v)(u,v) と (v,u)(v,u) が両方あってもよい。ネットワークとは、有向グラフ DD、容量 c:E→R≥0c:E\to\mathbb{R}_{\ge0}、相異なる 2 頂点 ss(入口)、tt(出口)の組である。

関数 f:E→Rf:E\to\mathbb{R} と頂点集合 S⊆VS\subseteq V に対し

f+(S)=∑(u,v)∈E, u∈S, v∉Sf(u,v),f−(S)=∑(u,v)∈E, u∉S, v∈Sf(u,v)f^+(S)=\sum_{(u,v)\in E,\ u\in S,\ v\notin S}f(u,v),\qquad f^-(S)=\sum_{(u,v)\in E,\ u\notin S,\ v\in S}f(u,v)

と書く(SS から出る量、SS に入る量)。f±(v)=f±({v})f^\pm(v)=f^\pm(\{v\}) とする。ff がフローであるとは、

  • 容量制約: すべての e∈Ee\in E で 0≤f(e)≤c(e)0\le f(e)\le c(e)、
  • 保存則: s,ts,t 以外のすべての頂点 vv で f+(v)=f−(v)f^+(v)=f^-(v)

を満たすことをいう。∣f∣=f+(s)−f−(s)|f|=f^+(s)-f^-(s) をフローの流量という。流量が最大のフローを最大フローという。

定義 4.2(カット)↗

s∈Ss\in S、t∉St\notin S である頂点集合 S⊆VS\subseteq V を ss–tt カットといい、

c(S)=∑(u,v)∈E, u∈S, v∉Sc(u,v)c(S)=\sum_{(u,v)\in E,\ u\in S,\ v\notin S}c(u,v)

をその容量という。容量が最小のカットを最小カットという。

補題 4.3(流量はどのカットでも測れる)✓

フロー ff と ss–tt カット SS について

∣f∣=f+(S)−f−(S)≤c(S)|f|=f^+(S)-f^-(S)\le c(S)

が成り立つ。等号 ∣f∣=c(S)|f|=c(S) が成り立つのは、SS から出る辺がすべて f(e)=c(e)f(e)=c(e)、SS に入る辺がすべて f(e)=0f(e)=0 のとき、そのときに限る。

証明(補題 4.3)

SS の頂点 vv について f+(v)−f−(v)f^+(v)-f^-(v) を足し合わせます。保存則から v≠sv\ne s の項は 0 で(t∉St\notin S)、和は ∣f∣|f| です。一方、同じ和を辺ごとに整理します。両端が SS に入る辺 (u,v)(u,v) は、f+(u)f^+(u) に +f(u,v)+f(u,v)、f−(v)f^-(v) に −f(u,v)-f(u,v) として現れて打ち消し合います。SS から出る辺は +f(e)+f(e) だけ、SS に入る辺は −f(e)-f(e) だけが現れます。よって

∣f∣=∑v∈S(f+(v)−f−(v))=f+(S)−f−(S)|f|=\sum_{v\in S}\bigl(f^+(v)-f^-(v)\bigr)=f^+(S)-f^-(S)

です。容量制約から f+(S)≤c(S)f^+(S)\le c(S)、f−(S)≥0f^-(S)\ge0 なので ∣f∣≤c(S)|f|\le c(S) で、等号は f+(S)=c(S)f^+(S)=c(S) かつ f−(S)=0f^-(S)=0 のとき、すなわち主張の条件のときです。

この補題から、どのフローの流量も、どのカットの容量以下です。「流量 == 容量」となるフローとカットの組が見つかれば、そのフローは最大、カットは最小です(第 2 章の 補題 2.3[マッチング] と同じ構図です)。

定義 4.4(残余ネットワーク・増加道)↗

フロー ff に対し、各辺 e=(x,y)∈Ee=(x,y)\in E から 2 種類の残余辺を作る。

  • f(e)<c(e)f(e)<c(e) のとき、xx から yy への順方向の残余辺 e+e^+。残余容量は c(e)−f(e)c(e)-f(e)。
  • f(e)>0f(e)>0 のとき、yy から xx への逆方向の残余辺 e−e^-。残余容量は f(e)f(e)。

残余辺の全体を ff の残余ネットワーク RfR_f という。相異なる頂点の列 s=v0,v1,…,vk=ts=v_0,v_1,\dots,v_k=t と、vi−1v_{i-1} から viv_i への残余辺 aia_i の列を ff-増加道といい、aia_i の残余容量の最小値 ε>0\varepsilon>0 をその残余容量という。増加道に沿って ff を増加するとは、ai=e+a_i=e^+ である辺 ee で f(e)f(e) を ε\varepsilon 増やし、ai=e−a_i=e^- である辺 ee で f(e)f(e) を ε\varepsilon 減らすことをいう。

逆方向の残余辺を使うことは、すでに流している量を押し戻して別の経路に回すことにあたります。第 2 章の増加道で、マッチングの辺を外して付け替えたのと同じです。

補題 4.5(増加すると流量が増える)✓

フロー ff を残余容量 ε\varepsilon の増加道に沿って増加したものを f′f' とすると、f′f' はフローで、∣f′∣=∣f∣+ε|f'|=|f|+\varepsilon である。

証明(補題 4.5)

容量制約. 順方向に使う辺では f′(e)=f(e)+ε≤f(e)+(c(e)−f(e))=c(e)f'(e)=f(e)+\varepsilon\le f(e)+(c(e)-f(e))=c(e)、逆方向に使う辺では f′(e)=f(e)−ε≥0f'(e)=f(e)-\varepsilon\ge0 です。増加道の頂点は相異なるので、同じ辺 ee が 2 回(e+e^+ と e−e^- の両方として)使われることはありません。

保存則と流量. 頂点 vv の正味の流出量を ∂f(v)=f+(v)−f−(v)\partial f(v)=f^+(v)-f^-(v) と書きます。増加道の第 ii 歩が ∂f\partial f に与える変化を調べます。ai=e+a_i=e^+、e=(vi−1,vi)e=(v_{i-1},v_i) なら、f+(vi−1)f^+(v_{i-1}) と f−(vi)f^-(v_i) が ε\varepsilon 増えます。ai=e−a_i=e^-、e=(vi,vi−1)e=(v_i,v_{i-1}) なら、f−(vi−1)f^-(v_{i-1}) と f+(vi)f^+(v_i) が ε\varepsilon 減ります。どちらの場合も、∂f(vi−1)\partial f(v_{i-1}) は ε\varepsilon 増え、∂f(vi)\partial f(v_i) は ε\varepsilon 減ります。途中の頂点 viv_i(0<i<k0<i<k)は第 ii 歩の終点と第 i+1i+1 歩の始点にちょうど 1 回ずつなるので、∂f′(vi)=∂f(vi)=0\partial f'(v_i)=\partial f(v_i)=0 です。道の上にない頂点では何も変わりません。s=v0s=v_0 は第 1 歩の始点にだけなるので、∣f′∣=∂f′(s)=∣f∣+ε|f'|=\partial f'(s)=|f|+\varepsilon です。

補題 4.6(増加道が無ければ流量と等しい容量のカットがある)✓

フロー ff が増加道をもたないとする。ss から残余辺をたどって届く頂点の集合を SS とすると、SS は ss–tt カットで、∣f∣=c(S)|f|=c(S) である。したがって ff は最大フロー、SS は最小カットである。

証明(補題 4.6)

s∈Ss\in S です。t∈St\in S なら、ss から tt へ残余辺をたどる歩道があり、頂点の重複を取り除けば増加道になるので、仮定に反します。よって SS は ss–tt カットです。

SS から出る辺 e=(x,y)e=(x,y)(x∈Sx\in S、y∉Sy\notin S)で f(e)<c(e)f(e)<c(e) とすると、順方向の残余辺 e+e^+ で yy に届き、y∈Sy\in S となって矛盾します。よって f(e)=c(e)f(e)=c(e) です。SS に入る辺 e=(x,y)e=(x,y)(x∉Sx\notin S、y∈Sy\in S)で f(e)>0f(e)>0 とすると、逆方向の残余辺 e−e^- で yy から xx に届き、x∈Sx\in S となって矛盾します。よって f(e)=0f(e)=0 です。補題 4.3 の等号条件から ∣f∣=c(S)|f|=c(S) です。同じ補題から、どのフロー gg についても ∣g∣≤c(S)=∣f∣|g|\le c(S)=|f|、どのカット S′S' についても c(S′)≥∣f∣=c(S)c(S')\ge|f|=c(S) です。

次の補題は、流量が最大のフローが本当に存在するかを確かめるためのものです。フローの候補は無限にあるので、候補全体が有界で閉じた集合であることを使って、最大値が実際に取られることを言います。位相の言葉を使いますが、この補題を使わない別の証明が 注意 4.12 にあります。

補題 4.7(最大フローの存在)✓

容量が非負の実数であるどのネットワークにも、最大フローが存在する。

証明(補題 4.7)

m=∣E∣m=|E| とし、関数 f:E→Rf:E\to\mathbb{R} を Rm\mathbb{R}^m の点と見ます。フローの全体 F\mathcal F は、直方体 ∏e[0,c(e)]\prod_{e}[0,c(e)] の点のうち、有限個の一次式の等式 f+(v)−f−(v)=0f^+(v)-f^-(v)=0(v≠s,tv\ne s,t)を満たすものの集合です。直方体は有界な閉集合で、一次式は連続なので、各等式の解の集合(閉集合 {0}\{0\} の連続写像による逆像)も閉集合です。よって F\mathcal F は有界な閉集合で、Heine–Borel の定理(定理 5.2[コンパクト性])からコンパクトです。恒等的に 0 の関数はフローなので F≠∅\mathcal F\ne\varnothing です。流量 f↦∣f∣f\mapsto|f| は一次式なので連続で、最大値・最小値の定理(系 6.2[コンパクト性])から F\mathcal F の上で最大値を取ります。

定理 4.8(最大フロー最小カット定理)✓

どのネットワークでも、フローの流量の最大値は、ss–tt カットの容量の最小値に等しい。

max⁡f∣f∣=min⁡Sc(S).\max_f|f|=\min_Sc(S).
証明(定理 4.8)

補題 4.7 から最大フロー ff があります。ff が増加道をもてば、補題 4.5 から流量のより大きいフローができて最大性に反するので、ff は増加道をもちません。補題 4.6 から、∣f∣=c(S)|f|=c(S) となる ss–tt カット SS があり、SS は最小カットです。

定理 4.9(整数性定理)✓

容量がすべて非負整数のネットワークには、すべての辺で値が整数である最大フローが存在する。それは、恒等的に 0 のフローから始めて、増加道がある限り増加を繰り返すことで得られる(Ford–Fulkerson の方法)。

証明(定理 4.9)

恒等的に 0 のフローは整数値です。ff が整数値のフローなら、残余容量 c(e)−f(e)c(e)-f(e) と f(e)f(e) はすべて整数なので、増加道の残余容量 ε\varepsilon は正の整数で、増加したフローも整数値、流量は 1 以上増えます(補題 4.5)。流量は c({s})c(\{s\}) 以下(補題 4.3)なので、増加は高々 c({s})c(\{s\}) 回で止まります。止まったときのフローは整数値で増加道をもたないので、補題 4.6 から最大フローです。

例 4.10(6 頂点のネットワークで増加道を 3 回追う)

頂点 s,a,b,c,d,ts,a,b,c,d,t、辺と容量が

(s,a):2, (s,b):2, (a,c):2, (a,d):1, (b,d):2, (c,t):2, (d,t):1(s,a):2,\ (s,b):2,\ (a,c):2,\ (a,d):1,\ (b,d):2,\ (c,t):2,\ (d,t):1

のネットワークを考えます。

sabcdt2221221
例のネットワーク。数字は容量。破線は最小カット S = {s, b, d} の境界

0 のフローから始め、わざと遠回りの増加道を先に選びます。

  1. 増加道 s→a→d→ts\to a\to d\to t(すべて順方向、残余容量 min⁡(2,1,1)=1\min(2,1,1)=1)。f(s,a)=f(a,d)=f(d,t)=1f(s,a)=f(a,d)=f(d,t)=1、流量 1。
  2. 増加道 s→a→c→ts\to a\to c\to t(残余容量 min⁡(1,2,2)=1\min(1,2,2)=1)。f(s,a)=2f(s,a)=2、f(a,c)=f(c,t)=1f(a,c)=f(c,t)=1、流量 2。
  3. (s,a)(s,a) と (d,t)(d,t) は飽和しました。s→b→ds\to b\to d と進んだあと、辺 (a,d)(a,d) を逆方向に使って aa に戻り、a→c→ta\to c\to t と進みます。残余容量は min⁡(2,2,1,1,1)=1\min(2,2,1,1,1)=1 です。f(s,b)=f(b,d)=1f(s,b)=f(b,d)=1、f(a,d)=0f(a,d)=0、f(a,c)=f(c,t)=2f(a,c)=f(c,t)=2、流量 3。

3 回目の増加は、aa から dd に流していた 1 を a→ca\to c に回し、空いた (d,t)(d,t) を bb からの流れが使う、という付け替えです。この時点で ss から残余辺で届くのは bb(f(s,b)=1<2f(s,b)=1<2)と dd(f(b,d)=1<2f(b,d)=1<2)だけです。dd からは、(d,t)(d,t) が飽和し、(a,d)(a,d) の流れが 0 なので先へ進めません。S={s,b,d}S=\{s,b,d\} から出る辺は (s,a)(s,a) と (d,t)(d,t) で、c(S)=2+1=3=∣f∣c(S)=2+1=3=|f| です。補題 4.6 のとおり、最大フローと最小カットが同時に得られました。

容量が整数(したがって有理数)なら Ford–Fulkerson の方法は必ず止まりますが、増加の回数は容量の大きさに比例しうるうえ、容量が実数のときは止まる保証がありません。増加道を辺の数が最小になるように選べば、容量の値によらない回数で止まります。

命題 4.11(最短の増加道を選べば nm 回以内で止まる)✓

頂点が nn 個、辺が mm 本のネットワーク(容量は非負の実数)で、あるフローから始めて、毎回、残余辺の本数が最小の増加道に沿って増加する。このとき、増加の回数は nmnm 回以下である。

証明の方針です。残余ネットワークでの ss からの最短距離を追います。(1) 増加しても距離は減らない、(2) ある残余辺が再びボトルネック(その増加でちょうど使い切られる辺)になるまでに、その辺の始点の距離は 2 以上増える、という 2 点から、1 本の残余辺がボトルネックになる回数を数え上げます。

証明(命題 4.11)

フロー gg に対し、残余ネットワーク RgR_g の中で ss から vv へ残余辺をたどる歩道の残余辺の本数の最小値を dg(v)d_g(v) と書きます(届かなければ ∞\infty)。残余辺 aa が xx から yy へ向かうとき、aa の逆とは、同じ辺 ee から作られる yy から xx への残余辺(e+e^+ に対する e−e^-、e−e^- に対する e+e^+)のことです。

手順 1(距離は減らない). ff を最短の増加道 PP に沿って増加して f′f' になったとします。すべての頂点 xx について df′(x)≥df(x)d_{f'}(x)\ge d_f(x) を示します。PP の上の残余辺が uu から vv へ向かうなら、PP が最短なので df(v)=df(u)+1d_f(v)=d_f(u)+1 です。Rf′R_{f'} にあって RfR_f にない残余辺は、増加で値が変わった辺から新しく生じたもので、PP の上の残余辺の逆に限られます。それは vv から uu へ向かい、df(u)=df(v)−1d_f(u)=d_f(v)-1 を満たします。

Rf′R_{f'} の中の ss から xx への最短の歩道 s=x0,x1,…,xk=xs=x_0,x_1,\dots,x_k=x(k=df′(x)k=d_{f'}(x))を取ります。各残余辺(xi−1x_{i-1} から xix_i へ)は、RfR_f にもあるか、PP の上の残余辺の逆です。前者なら df(xi)≤df(xi−1)+1d_f(x_i)\le d_f(x_{i-1})+1、後者なら df(xi)=df(xi−1)−1≤df(xi−1)+1d_f(x_i)=d_f(x_{i-1})-1\le d_f(x_{i-1})+1 です。ii について足し上げて df(x)≤df(s)+k=df′(x)d_f(x)\le d_f(s)+k=d_{f'}(x) です。

手順 2(同じ残余辺がボトルネックになる回数). 増加道の上で残余容量が最小値 ε\varepsilon に等しい残余辺をボトルネックと呼びます。増加ごとに少なくとも 1 本のボトルネックがあります。uu から vv へ向かう残余辺 aa が、フロー ff での増加でボトルネックになったとします。増加後、a=e+a=e^+ なら f′(e)=c(e)f'(e)=c(e)、a=e−a=e^- なら f′(e)=0f'(e)=0 となり、aa は残余ネットワークから消えます。aa がふたたび現れるのは、ee の値が逆向きに変わったとき、すなわち aa の逆(vv から uu へ)が、あとのフロー gg での増加道に使われたときに限ります。そのとき、最短性と手順 1 から

dg(u)=dg(v)+1≥df(v)+1=df(u)+2d_g(u)=d_g(v)+1\ge d_f(v)+1=d_f(u)+2

です。aa が次にボトルネックになるフロー hh では、手順 1 から dh(u)≥dg(u)≥df(u)+2d_h(u)\ge d_g(u)\ge d_f(u)+2 です。つまり、aa がボトルネックになるたびに、そのときの d(u)d(u) は 2 以上増えています。

aa が増加道の上にあるとき、uu は増加道の tt 以外の頂点で、増加道の頂点は相異なるので 0≤d(u)≤n−20\le d(u)\le n-2 です。この範囲で 2 以上ずつ増える値は高々 ⌊(n−2)/2⌋+1≤n/2\lfloor(n-2)/2\rfloor+1\le n/2 個なので、aa がボトルネックになるのは n/2n/2 回以下です。

手順 3(合計). 残余辺になりうるものは各辺につき e+e^+ と e−e^- の 2 つ、合計 2m2m 個です。増加のたびにそのどれかがボトルネックになるので、増加の回数は 2m⋅n/2=nm2m\cdot n/2=nm 以下です。

注意 4.12

命題 4.11 の方法で止まったときのフローは増加道をもたないので、補題 4.6 から最大フローです。これは 補題 4.7 の、コンパクト性を使わない別証明になっています。増加道を勝手に選んだ場合には、容量に無理数があると、増加が無限に続き、流量が最大値より真に小さい値に収束する例が知られています(Ford と Fulkerson による。参考文献の Ford–Fulkerson の本を見てください)。その例が示すのは「どの増加道を選ぶか」に注意が必要だということで、定理そのものは実数の容量で成り立ちます。

注意 4.13

辺を抵抗、フローを電流と見ると、保存則は Kirchhoff の電流則にあたります。電流は保存則に加えて電位の存在(電圧則)を満たす特別なフローで、グラフの Laplacian(定義 2.3[グラフと行列式])を係数とする連立一次方程式の解として定まります。この章のフローには電圧則にあたる条件はなく、容量の範囲で自由に選べる点が違います。

定義 5.1(内素な道・辺素な道)↗

ss から tt への何本かの道が、s,ts,t 以外に頂点を共有しないとき内素であるといい、辺を共有しないとき辺素であるという。

整数性定理を使うための準備として、0 と 1 だけを値に取るフローが道に分解できることを示します。

補題 5.2(0-1 フローは道に分解できる)✓

ネットワークのフロー ff がすべての辺で 0 か 1 の値を取り、流量が整数 k≥0k\ge0 であるとする。このとき、f(e)=1f(e)=1 の辺だけを使う ss から tt への有向道(頂点の重複がないもの)が kk 本あり、どの 2 本も辺を共有しない。

証明(補題 5.2)

kk についての帰納法(定理 3.2[証明の技術])で示します。k=0k=0 なら示すことはありません。k≥1k\ge1 とします。f(e)=1f(e)=1 の辺をたどって ss から届く頂点の集合を RR とします。t∉Rt\notin R なら RR は ss–tt カットで、RR から出る辺はすべて f(e)=0f(e)=0 なので、補題 4.3 から ∣f∣=f+(R)−f−(R)≤0|f|=f^+(R)-f^-(R)\le0 となり、k≥1k\ge1 に反します。よって f(e)=1f(e)=1 の辺だけを使う ss から tt への歩道があり、辺の本数が最小のものを取れば頂点の重複のない有向道 PP になります。

PP の辺で値を 1 減らした関数を f′f' とします。f′f' は 0 か 1 の値を取ります。PP の途中の頂点では入る辺と出る辺が 1 本ずつ減るので保存則が保たれ、ss では出る辺が 1 本減るだけなので ∣f′∣=k−1|f'|=k-1 です。帰納法の仮定から、f′(e)=1f'(e)=1 の辺だけを使う辺素な道が k−1k-1 本あります。これらは PP の辺(f′(e)=0f'(e)=0)を使わないので、PP と合わせて kk 本の辺素な道になります。

補題 5.3(有向グラフの辺版)✓

有向グラフ DD と相異なる頂点 s,ts,t について、ss から tt への辺素な有向道の最大本数は、除くと ss から tt への有向道がなくなる辺集合の大きさの最小値に等しい。

証明(補題 5.3)

辺素な道が kk 本あり、辺集合 FF を除くと有向道がなくなるなら、FF は各道から辺を 1 本以上含み、それらは相異なるので ∣F∣≥k|F|\ge k です。逆向きを示します。すべての辺の容量を 1 としたネットワークを考えます。定理 4.9 から整数値(したがって 0 か 1)の最大フロー ff があり、その流量を kk とします。補題 5.2 から辺素な有向道が kk 本あります。定理 4.8 から容量 kk の ss–tt カット SS があります。容量がすべて 1 なので、SS から出る辺はちょうど kk 本です。ss から tt への有向道は SS から出る辺を必ず使うので、この kk 本を除くと有向道はなくなります。

定理 5.4(Menger の定理)✓

GG をグラフ、s≠ts\ne t をその頂点とする。

  1. (頂点版) ss と tt が隣接しないとき、ss から tt への内素な道の最大本数は、ss と tt を分離する頂点集合 X⊆V(G)∖{s,t}X\subseteq V(G)\setminus\{s,t\} の大きさの最小値に等しい。
  2. (辺版) ss から tt への辺素な道の最大本数は、ss と tt を分離する辺集合の大きさの最小値に等しい。

証明の方針です。「道の本数 ≤\le 分離する集合の大きさ」は易しいので、逆向きをフローに帰着します。辺版は、各辺を向きの異なる 2 本の有向辺にして容量を 1 にします。頂点版は、各頂点を入り側と出側に割って、その間を容量 1 の辺で結びます。こうすると、頂点を通れるのは 1 回だけ、という制限が辺の容量で表せます。

証明(定理 5.4)

どちらも「道の本数 ≤\le 分離する集合の大きさ」は、各道が分離する集合の元を少なくとも 1 つ含み、それらが道ごとに異なることから従います(頂点版では、s,ts,t が隣接しないので各道は内部の頂点をもち、分離集合の元は内部の頂点です)。逆向きの不等式を、フローに帰着して示します。

2(辺版). GG の各辺 uvuv を 2 本の有向辺 (u,v)(u,v)、(v,u)(v,u) に置き換えた有向グラフ DD を作り、すべての容量を 1 とします。定理 4.9 から 0-1 値の最大フロー ff があり、流量を kk とします。ある u,vu,v で f(u,v)=f(v,u)=1f(u,v)=f(v,u)=1 なら、両方を 0 に変えます。uu でも vv でも入る量と出る量が 1 ずつ減るので、フローのままで流量も変わりません。これを繰り返して、どの辺 uvuv についても f(u,v)f(u,v) と f(v,u)f(v,u) の少なくとも一方が 0 であるようにします。補題 5.2 から、f(e)=1f(e)=1 の有向辺だけを使う辺素な有向道が kk 本あります。これらは GG の道として、同じ辺を 2 本が使うことはありません(逆向きに使うこともありません)。よって GG に辺素な道が kk 本あります。

一方、定理 4.8 から容量 kk の ss–tt カット SS があります。SS から出る有向辺は kk 本で、これは GG で SS と V(G)∖SV(G)\setminus S を結ぶ辺がちょうど kk 本であることを意味します。この kk 本を除けば ss と tt は分離されます。

1(頂点版). n=∣V(G)∣n=|V(G)| とし、次のネットワーク D′D' を作ります。

  • 頂点: ss、tt、および s,ts,t 以外の各頂点 vv に対する 2 つの頂点 v−v^-(入り側)、v+v^+(出側)。便宜上 s+=ss^+=s、t−=tt^-=t と書く。
  • 頂点辺: 各 v≠s,tv\ne s,t に対し (v−,v+)(v^-,v^+)。容量 1。
  • つなぎ辺: GG の各辺 uvuv に対し (u+,v−)(u^+,v^-) と (v+,u−)(v^+,u^-)。ただし ss に入るもの、tt から出るものは作らない。容量 nn。

容量の小さいカットがある. S0={s}∪{v−:v≠s,t}S_0=\{s\}\cup\{v^-:v\ne s,t\} は ss–tt カットです。ss から出るつなぎ辺は v−v^- に入り(ss と tt は隣接しないので tt には入りません)、v−v^- から出る辺は頂点辺だけなので、S0S_0 から出る辺は n−2n-2 本の頂点辺で、c(S0)=n−2c(S_0)=n-2 です。

最小カットから分離集合を作る. 定理 4.9 から整数値の最大フロー ff があり、流量を kk とします。定理 4.8 から容量 k≤n−2<nk\le n-2<n の最小カット SS があります。容量 nn のつなぎ辺が SS から出ると c(S)≥nc(S)\ge n となるので、SS から出る辺はすべて頂点辺で、ちょうど kk 本です。それらを (v−,v+)(v^-,v^+)(v∈Xv\in X)とすると ∣X∣=k|X|=k、X⊆V(G)∖{s,t}X\subseteq V(G)\setminus\{s,t\} です。G−XG-X に ss から tt への道 sv1v2⋯vrtsv_1v_2\cdots v_rt があるとすると、

s, v1−, v1+, v2−, v2+, …, vr−, vr+, ts,\ v_1^-,\ v_1^+,\ v_2^-,\ v_2^+,\ \dots,\ v_r^-,\ v_r^+,\ t

は D′D' の有向道です。s∈Ss\in S、t∉St\notin S なので、この有向道は SS から出る辺を使いますが、使う頂点辺は (vi−,vi+)(v_i^-,v_i^+)(vi∉Xv_i\notin X)だけで、SS から出る辺を使えません。矛盾です。よって XX は ss と tt を分離します。

フローから内素な道を作る. ff は頂点辺で 0 か 1 の値を取ります。つなぎ辺 (u+,v−)(u^+,v^-) では、u≠su\ne s のとき u+u^+ に入る辺が頂点辺 (u−,u+)(u^-,u^+) だけなので、保存則から f(u+,v−)≤f+(u+)=f−(u+)≤1f(u^+,v^-)\le f^+(u^+)=f^-(u^+)\le1 です。u=su=s のときは、v−v^- から出る辺が頂点辺だけなので f(s,v−)≤f−(v−)=f+(v−)≤1f(s,v^-)\le f^-(v^-)=f^+(v^-)\le1 です。よって ff は 0-1 値で、補題 5.2 から辺素な有向道が kk 本あります。各有向道は上の形をしていて、GG の ss から tt への道 sv1⋯vrtsv_1\cdots v_rt を与えます。2 本の道が GG の頂点 v≠s,tv\ne s,t を共有したとします。v−v^- を通る有向道は次に頂点辺 (v−,v+)(v^-,v^+) を使うしかなく、v+v^+ を通る有向道は直前に頂点辺 (v−,v+)(v^-,v^+) を使うしかないので、2 本とも同じ頂点辺を使うことになり、辺素であることに反します。よって kk 本の道は内素です。

頂点版の証明の要点は、頂点を「入り側」と「出側」に割って、その間の辺の容量で頂点の通過回数を制限することです。容量の制約を頂点に付けたい場面でいつも使える手法です。

vv⁻v⁺1
頂点の分割。左の頂点 v は、右では入り側 v⁻ と出側 v⁺ に割られ、間を容量 1 の辺で結ぶ(ほかの辺は容量 n)

系 5.5(Menger の定理の大域版)✓

k≥1k\ge1、GG を 2 頂点以上のグラフとする。

  1. GG が kk-連結であるためには、どの相異なる 2 頂点も kk 本の内素な道で結ばれることが必要十分である。
  2. GG が kk-辺連結であるためには、どの相異なる 2 頂点も kk 本の辺素な道で結ばれることが必要十分である。
証明(系 5.5)

2. GG が kk-辺連結であることは、kk 本未満の辺ではどの 2 頂点も分離できないことと同じです。定理 5.4 の 2 から、これは、どの 2 頂点についても辺素な道の最大本数が kk 以上であることと同値です。

1 の十分性. どの 2 頂点も kk 本の内素な道で結ばれるとします。相異なる 2 頂点 u,vu,v を結ぶ kk 本の内素な道のうち、内部の頂点をもたないもの(辺 uvuv そのもの)は高々 1 本で、残りの k−1k-1 本は相異なる内部の頂点をもつので、n≥2+(k−1)=k+1n\ge2+(k-1)=k+1 です。∣S∣<k|S|<k である SS について G−SG-S が非連結だとすると、異なる成分の頂点 u,vu,v を結ぶ kk 本の内素な道はどれも SS の頂点を内部に含み、それらは相異なるので ∣S∣≥k|S|\ge k となって矛盾します。

1 の必要性. GG を kk-連結、u≠vu\ne v とします。

u,vu,v が隣接しないとき. uu と vv を分離する頂点集合は分離集合なので、大きさは kk 以上です。定理 5.4 の 1 から内素な道が kk 本あります。

u,vu,v が隣接するとき. k=1k=1 なら辺 uvuv が求める道です。k≥2k\ge2 とし、G′=G−uvG'=G-uv と置きます。G′G' で uu と vv を分離する頂点集合 SS の大きさが k−1k-1 以上であることを示します。∣S∣≤k−2|S|\le k-2 とすると、G−SG-S は連結で、G−SG-S から辺 uvuv を除くと uu を含む成分 XX と vv を含む成分 YY に分かれます。G−SG-S の頂点数は n−∣S∣≥(k+1)−(k−2)=3n-|S|\ge(k+1)-(k-2)=3 なので、たとえば XX に uu 以外の頂点 ww があります。G−(S∪{u})G-(S\cup\{u\}) の中の ww から vv への道は、辺 uvuv を使わない G−SG-S の道なので、存在しません。すると S∪{u}S\cup\{u\} は大きさ k−1k-1 以下の分離集合となり、kk-連結性に反します。よって 定理 5.4 の 1 を G′G' に使って、G′G' に uu から vv への内素な道が k−1k-1 本あり、辺 uvuv と合わせて kk 本です。

5.1. 扇の補題と、指定した頂点を通る閉路

Section titled “5.1. 扇の補題と、指定した頂点を通る閉路”

補題 5.6(扇の補題)✓

k≥1k\ge1、GG を kk-連結グラフ、xx をその頂点、Y⊆V(G)∖{x}Y\subseteq V(G)\setminus\{x\} を ∣Y∣≥k|Y|\ge k である頂点集合とする。このとき、xx から YY の相異なる頂点への kk 本の道で、どの 2 本も xx 以外に頂点を共有せず、各道が終点以外に YY の頂点を含まないもの(xx から YY への kk-扇)が存在する。

証明(補題 5.6)

GG に新しい頂点 zz を足し、YY の全頂点と結んだグラフを G+G^+ とします。G+G^+ は kk-連結です。実際、頂点数は k+1k+1 より大きく、kk 個未満の頂点の集合 SS を除くと、z∈Sz\in S なら G+−S=G−(S∖{z})G^+-S=G-(S\setminus\{z\}) は連結、z∉Sz\notin S なら G−SG-S は連結で、zz は Y∖S≠∅Y\setminus S\ne\varnothing(∣Y∣≥k>∣S∣|Y|\ge k>|S|)の頂点と隣接するので、やはり連結です。

系 5.5 の 1 から、G+G^+ に xx から zz への内素な道が kk 本あります。各道を xx からたどって最初に YY の頂点に出会ったところで打ち切ります(zz の隣接点は YY の頂点だけなので、必ず出会います)。打ち切った道は GG の道で、終点以外に YY の頂点を含みません。終点は元の道の内部の頂点なので、道ごとに異なります。xx 以外の頂点を共有しないことは、元の道が内素であることから従います。

定理 5.7(k-連結グラフでは任意の k 頂点が閉路に乗る)✓

k≥2k\ge2 とする。kk-連結グラフ GG の任意の kk 個の頂点に対し、それらをすべて通る閉路が存在する。

証明の方針です。k−1k-1 個の頂点を通る閉路 CC から始め、残りの 1 頂点 xkx_k から CC へ扇を張ります。そして CC の一部を、xkx_k を経由する道に付け替えて、kk 個すべてを通る閉路にします。

証明(定理 5.7)

kk についての帰納法(定理 3.2[証明の技術])です。k=2k=2 は 定理 3.2 の (1)⇒(2)(1)\Rightarrow(2) です。k≥3k\ge3 とし、k−1k-1 では正しいとします。x1,…,xkx_1,\dots,x_k を GG の相異なる頂点とします。GG は (k−1)(k-1)-連結でもあるので、x1,…,xk−1x_1,\dots,x_{k-1} を通る閉路 CC があります。xkx_k が CC の上にあれば終わりなので、ないとします。

場合 1: CC の頂点が kk 個以上. 補題 5.6 を x=xkx=x_k、Y=V(C)Y=V(C) に使い、xkx_k から CC への kk-扇を取ります。扇の道は終点でだけ CC と交わります。CC に向きを付け、x1,…,xk−1x_1,\dots,x_{k-1} が CC の上でこの順に並んでいるとして(番号を付け替えればよい)、CC の頂点を k−1k-1 個の区間

Ij={xj から向きに沿って進み、xj+1 の直前までの頂点}(j=1,…,k−1, xk の代わりに x1)I_j=\{x_j\text{ から向きに沿って進み、}x_{j+1}\text{ の直前までの頂点}\}\qquad(j=1,\dots,k-1,\ x_k\text{ の代わりに }x_1)

に分けます。扇の終点は kk 個あるので、鳩の巣原理(定理 7.5[数え上げと母関数])から、同じ区間 IjI_j に入る 2 つの終点 y,y′y,y' があります。向きに沿って yy、y′y' の順に並んでいるとすると、CC の上で yy から y′y' へ向きに沿って進む部分の内部には、x1,…,xk−1x_1,\dots,x_{k-1} のどれもありません。CC のこの部分を、扇の 2 本の道をつないだ「yy から xkx_k を経て y′y' へ」の道で置き換えると、x1,…,xkx_1,\dots,x_k をすべて通る閉路になります。

場合 2: CC の頂点が k−1k-1 個. このとき V(C)={x1,…,xk−1}V(C)=\{x_1,\dots,x_{k-1}\} です。GG は (k−1)(k-1)-連結なので、補題 5.6 から xkx_k から V(C)V(C) への (k−1)(k-1)-扇があり、その終点は CC の全頂点です。CC の上で隣り合う 2 頂点 y,y′y,y' を選び(k−1≥2k-1\ge2)、辺 yy′yy' を「yy から xkx_k を経て y′y' へ」の道で置き換えれば、x1,…,xkx_1,\dots,x_k をすべて通る閉路になります。

定理 5.8(Chvátal–Erdős の定理)✓

n≥3n\ge3 頂点のグラフ GG が κ(G)≥α(G)\kappa(G)\ge\alpha(G) を満たせば、GG は Hamilton 閉路をもつ。ここで α(G)\alpha(G) は独立数(定義 2.2[マッチング])である。

証明(定理 5.8)

k=κ(G)k=\kappa(G) と置きます。α(G)=1\alpha(G)=1 なら GG は完全グラフで、n≥3n\ge3 なので Hamilton 閉路をもちます。α(G)≥2\alpha(G)\ge2 とすると k≥2k\ge2 で、定理 2.2 から δ(G)≥k≥2\delta(G)\ge k\ge2 です。命題 3.1[道・閉路・木] から GG は長さ k+1k+1 以上の閉路を含みます。

GG の最長の閉路 CC を取り、向きを付けます。CC が Hamilton 閉路でないとして矛盾を導きます。G−V(C)G-V(C) の連結成分 HH を 1 つ取り、HH の頂点と隣接する CC の頂点の集合を NN とします。

∣N∣≥k|N|\ge k. N=V(C)N=V(C) なら ∣N∣=∣V(C)∣≥k+1|N|=|V(C)|\ge k+1 です。N≠V(C)N\ne V(C) なら、HH の頂点から V(C)∖NV(C)\setminus N の頂点への道は必ず NN を通る(HH から外へ出る辺は NN の頂点にしか行きません)ので、NN は分離集合で、∣N∣≥k|N|\ge k です。

v∈Nv\in N に対し、CC の上で向きに沿って vv の次の頂点を v+v^+ と書き、N+={v+:v∈N}N^+=\{v^+:v\in N\} とします。u,v∈Nu,v\in N が相異なるとき、uu の隣接点 hu∈V(H)h_u\in V(H) と vv の隣接点 hv∈V(H)h_v\in V(H) を HH の中の道で結ぶことで、uu から vv への、内部の頂点がすべて HH に属する(1 個以上ある)道が取れます。これを uHvuHv と書きます。

N+∩N=∅N^+\cap N=\varnothing. v∈Nv\in N かつ v+∈Nv^+\in N とすると、CC の辺 vv+vv^+ を道 vHv+vHv^+ で置き換えた閉路は CC より長く、矛盾です。

N+N^+ は独立集合. u≠vu\ne v を NN の頂点とし、u+v+∈E(G)u^+v^+\in E(G) とします。u+u^+ から CC を向きに沿って vv まで進み、道 vHuvHu で uu に移り、uu から CC を向きと逆に v+v^+ まで進み、辺 v+u+v^+u^+ で戻る閉じた歩道を考えます。CC は向きに沿って u,u+,…,v,v+,…u,u^+,\dots,v,v^+,\dots と並んでいるので、この歩道は CC の全頂点を 1 回ずつ通り、さらに HH の頂点を 1 個以上通る閉路です。CC より長く、矛盾です。

矛盾. h∈V(H)h\in V(H) を取ります。N+N^+ の頂点は NN に属さないので hh と隣接しません。よって N+∪{h}N^+\cup\{h\} は独立集合で、その大きさは ∣N∣+1≥k+1>α(G)|N|+1\ge k+1>\alpha(G) です。これは α(G)\alpha(G) の定義に反します。

Dirac の定理(定理 6.6[道・閉路・木])と比べてみます。δ≥n/2\delta\ge n/2 のグラフでは κ≥α\kappa\ge\alpha が成り立つ(演習 7.3)ので、Dirac の定理は Chvátal–Erdős の定理から導き直せます。逆に、Petersen グラフは κ=3\kappa=3(例 2.4)で、外側と内側の五角形から 2 頂点ずつ選んだ独立集合があるので α≥4>κ\alpha\ge4>\kappa であり、Hamilton 閉路をもたないことと矛盾しません。

6. フローから Hall と König を導く

Section titled “6. フローから Hall と König を導く”

第 2 章では Hall の定理と König–Egerváry の定理を交互道で直接証明しました。ここでは、Menger の定理(したがって最大フロー最小カット定理)だけから両方を導き直します。3 つの最大最小定理が同じ 1 つの原理の現れであることが分かります。

命題 6.1(Menger の定理から König と Hall が従う)✓

GG を二部グラフ、(A,B)(A,B) をその二部分割とする。GG に新しい頂点 s,ts,t を足し、ss を AA の全頂点と、tt を BB の全頂点と結んだグラフを G±G^\pm とする。

  1. G±G^\pm の ss から tt への内素な道の最大本数は ν(G)\nu(G) に等しく、ss と tt を分離する頂点集合の大きさの最小値は τ(G)\tau(G) に等しい。したがって 定理 5.4 の 1 から ν(G)=τ(G)\nu(G)=\tau(G) が従う。
  2. ν(G)=τ(G)\nu(G)=\tau(G) から、「どの S⊆AS\subseteq A についても ∣N(S)∣≥∣S∣|N(S)|\ge|S| ならば、AA を飽和するマッチングがある」が従う。
証明(命題 6.1)

1. 道とマッチング. GG のマッチング {a1b1,…,akbk}\{a_1b_1,\dots,a_kb_k\}(ai∈Aa_i\in A、bi∈Bb_i\in B)に対し、道 saibitsa_ib_it は kk 本の内素な道です。逆に、ss から tt への kk 本の内素な道を取ります。各道から s,ts,t を除くと、AA の頂点から始まり BB の頂点で終わる GG の道なので、AA の頂点と BB の頂点を結ぶ辺を少なくとも 1 本含みます。各道からそのような辺を 1 本ずつ選ぶと、道が内素なので端点を共有せず、大きさ kk のマッチングになります。よって内素な道の最大本数は ν(G)\nu(G) です。

分離集合と頂点被覆. X⊆A∪BX\subseteq A\cup B とします。XX が頂点被覆でなければ、両端が XX に入らない辺 abab があり、道 sabtsabt が G±−XG^\pm-X に残るので、XX は s,ts,t を分離しません。XX が頂点被覆なら、ss から tt への道はどれも上で見たように GG の辺を含み、その端点の一方が XX に入るので、XX は s,ts,t を分離します。よって分離する頂点集合の最小の大きさは τ(G)\tau(G) です。

ss と tt は隣接しないので、定理 5.4 の 1 から両者は等しく、ν(G)=τ(G)\nu(G)=\tau(G) です。

2. 大きさ τ(G)=ν(G)\tau(G)=\nu(G) の頂点被覆 KK を取ります。A∖KA\setminus K の頂点に接続する辺は、BB 側の端点で覆われていなければならないので、N(A∖K)⊆K∩BN(A\setminus K)\subseteq K\cap B です。仮定から

∣K∩B∣≥∣N(A∖K)∣≥∣A∖K∣|K\cap B|\ge|N(A\setminus K)|\ge|A\setminus K|

なので、ν(G)=∣K∣=∣K∩A∣+∣K∩B∣≥∣K∩A∣+∣A∖K∣=∣A∣\nu(G)=|K|=|K\cap A|+|K\cap B|\ge|K\cap A|+|A\setminus K|=|A| です。大きさ ∣A∣|A| のマッチングは AA の全頂点を飽和します。

例 6.2(二部グラフの最大マッチングをフローで求める)

G±G^\pm の辺を s→A→B→ts\to A\to B\to t の向きに向け、すべての容量を 1 にしたネットワークを考えます。整数値のフロー(定理 4.9)は、AA の各頂点に入る量が 1 以下、BB の各頂点から出る量が 1 以下なので、流れている AA から BB への辺の全体がマッチングになり、流量がその大きさです。第 2 章の 例 3.4[マッチング] のグラフ(辺 a1b1,a1b2,a2b1,a2b3,a3b2a_1b_1,a_1b_2,a_2b_1,a_2b_3,a_3b_2)で、マッチング {a1b2,a2b1}\{a_1b_2,a_2b_1\} に対応する流量 2 のフローから出発すると、増加道

s→a3→b2 →逆 a1→b1 →逆 a2→b3→ts\to a_3\to b_2\ \overset{\text{逆}}{\to}\ a_1\to b_1\ \overset{\text{逆}}{\to}\ a_2\to b_3\to t

が見つかります。これは第 2 章の MM-増加道の前後に ss と tt を付けたものです。フローの増加道の「逆方向の残余辺」は、マッチングの増加道の「MM の辺」にちょうど対応しています。

注意 6.3

辺連結度に関する最大最小定理には、ほかに「辺素な全域木の最大本数」を与える Nash-Williams と Tutte の定理があります。グラフが kk 本の辺素な全域木をもつのは、頂点集合のどの分割についても、異なる部分を結ぶ辺が k(部分の個数−1)k(\text{部分の個数}-1) 本以上あるとき、そのときに限る、というものです。この章では使わないので、主張の紹介にとどめます(参考文献の Diestel の第 2 章にあります)。

演習 7.1標準

超立方体 QnQ_n(第 1 章の 例 6.13[道・閉路・木])について κ(Qn)=λ(Qn)=n\kappa(Q_n)=\lambda(Q_n)=n を示せ。

解答

QnQ_n は nn-正則なので、定理 2.2 から κ≤λ≤n\kappa\le\lambda\le n です。κ(Qn)≥n\kappa(Q_n)\ge n を nn についての帰納法で示します。Q1=K2Q_1=K_2 は κ=1\kappa=1 です。n≥2n\ge2 とします。QnQ_n の頂点を先頭の文字が 0 のもの V0V_0 と 1 のもの V1V_1 に分けると、Qn[V0]Q_n[V_0] と Qn[V1]Q_n[V_1] はどちらも Qn−1Q_{n-1} と同型で、先頭の文字だけが異なる頂点どうしを結ぶ 2n−12^{n-1} 本の辺(完全マッチング)で結ばれています。

∣S∣≤n−1|S|\le n-1 である頂点集合 SS を除いても連結であることを示します(kk-連結の定義にある頂点数の条件 2n>n2^n>n は成り立っています)。

∣S∩V0∣≤n−2|S\cap V_0|\le n-2 かつ ∣S∩V1∣≤n−2|S\cap V_1|\le n-2 のとき. 帰納法の仮定 κ(Qn−1)≥n−1\kappa(Q_{n-1})\ge n-1 から、Qn[V0]−SQ_n[V_0]-S と Qn[V1]−SQ_n[V_1]-S はどちらも連結です。V0V_0 と V1V_1 を結ぶ 2n−12^{n-1} 本の辺のうち、SS の頂点を端点にもつものは ∣S∣≤n−1|S|\le n-1 本以下で、n≥2n\ge2 では 2n−1>n−12^{n-1}>n-1 なので、両端が SS に入らない辺が残ります。よって Qn−SQ_n-S は連結です。

そうでないとき. SS の n−1n-1 個の頂点がすべて一方、たとえば V0V_0 に入っています。Qn[V1]Q_n[V_1] は無傷で連結で、V0∖SV_0\setminus S の各頂点は V1V_1 に隣接点をもつので、Qn−SQ_n-S は連結です。

演習 7.2易

例 4.10 のネットワークで、辺 (d,t)(d,t) の容量を 1 から 3 に変える。最大フローの流量と最小カットを求めよ。

解答

S={s}S=\{s\} の容量は 2+2=42+2=4 なので、流量は 4 以下です。s→a→c→ts\to a\to c\to t に 2、s→b→d→ts\to b\to d\to t に 2 を流すと、容量制約((a,c):2(a,c):2、(c,t):2(c,t):2、(b,d):2(b,d):2、(d,t):3(d,t):3)と保存則を満たす流量 4 のフローになります。補題 4.3 から、これが最大フローで、{s}\{s\} が最小カットです。{s,a,b}\{s,a,b\} から出る辺は (a,c),(a,d),(b,d)(a,c),(a,d),(b,d) で容量は 2+1+2=52+1+2=5 なので、こちらは最小カットではありません。

演習 7.3標準

n≥3n\ge3 頂点のグラフ GG が δ(G)≥n/2\delta(G)\ge n/2 を満たせば κ(G)≥α(G)\kappa(G)\ge\alpha(G) であることを示せ(したがって Dirac の定理は Chvátal–Erdős の定理から従う)。

解答

GG が完全グラフなら κ=n−1≥1=α\kappa=n-1\ge1=\alpha です。完全でないとし、最小の分離集合 SS(∣S∣=κ|S|=\kappa)と最大の独立集合 II(∣I∣=α|I|=\alpha)を取ります。κ<α\kappa<\alpha と仮定して矛盾を導きます。

I∖SI\setminus S は G−SG-S の 1 つの成分に含まれる. ∣I∣>∣S∣|I|>|S| なので I∖S≠∅I\setminus S\ne\varnothing です。u,v∈I∖Su,v\in I\setminus S を相異なる 2 頂点とします。II は独立集合なので N(u)N(u) と N(v)N(v) はどちらも V(G)∖IV(G)\setminus I(n−αn-\alpha 個)に含まれ、

∣N(u)∩N(v)∣=∣N(u)∣+∣N(v)∣−∣N(u)∪N(v)∣≥2δ−(n−α)≥α>∣S∣|N(u)\cap N(v)|=|N(u)|+|N(v)|-|N(u)\cup N(v)|\ge2\delta-(n-\alpha)\ge\alpha>|S|

です(2δ≥n2\delta\ge n を使いました)。よって uu と vv は SS に入らない共通の隣接点をもち、G−SG-S の同じ成分に属します。I∖SI\setminus S を含む成分の頂点集合を ZZ とすると、I⊆Z∪SI\subseteq Z\cup S です。

Z∪SZ\cup S は大きい. u∈I∖Su\in I\setminus S を 1 つ取ります。u∈Zu\in Z なので N(u)⊆Z∪SN(u)\subseteq Z\cup S で、N(u)∩I=∅N(u)\cap I=\varnothing です。Z∪SZ\cup S は互いに交わらない II と N(u)N(u) を含むので、∣Z∪S∣≥α+δ|Z\cup S|\ge\alpha+\delta です。

別の成分も大きい. SS は分離集合なので、ZZ と異なる成分 Z′Z' があります。y∈Z′y\in Z' を取ると N(y)⊆Z′∪SN(y)\subseteq Z'\cup S なので、∣Z′∣≥1+d(y)−∣S∣≥δ+1−∣S∣|Z'|\ge1+d(y)-|S|\ge\delta+1-|S| です。

矛盾. Z∪SZ\cup S と Z′Z' は交わらないので

n≥∣Z∪S∣+∣Z′∣≥(α+δ)+(δ+1−∣S∣)=2δ+1+(α−∣S∣)≥2δ+2>nn\ge|Z\cup S|+|Z'|\ge(\alpha+\delta)+(\delta+1-|S|)=2\delta+1+(\alpha-|S|)\ge2\delta+2>n

です(α−∣S∣≥1\alpha-|S|\ge1 と 2δ≥n2\delta\ge n を使いました)。これは矛盾なので、κ≥α\kappa\ge\alpha です。

演習 7.4難

フローを使わずに Menger の定理を証明する。グラフ GG と頂点集合 A,B⊆V(G)A,B\subseteq V(G) に対し、AA の頂点から BB の頂点への道(1 点だけの道も含める)を AA–BB 道と呼び、G−XG-X に AA–BB 道がなくなる X⊆V(G)X\subseteq V(G) の大きさの最小値を kk とする。GG には互いに頂点を共有しない AA–BB 道が kk 本あることを、辺の数についての帰納法で示せ。辺 e=xye=xy を縮約したグラフ G/eG/e(x,yx,y を 1 頂点 vev_e にまとめ、xx または yy の隣接点すべてと結ぶ。x,yx,y の一方が AA に属せば vev_e も AA に属するとし、BB も同様)と、ee を除いたグラフ G−eG-e を使う。

解答

辺がなければ、AA–BB 道は A∩BA\cap B の 1 点だけの道で、k=∣A∩B∣k=|A\cap B| 本あります。辺 e=xye=xy があるとし、辺の数がより少ないグラフでは主張が正しいとします。GG に頂点を共有しない AA–BB 道が kk 本ないとして矛盾を導きます。

G/eG/e を見る. G/eG/e に頂点を共有しない AA–BB 道が kk 本あれば、vev_e を通る道(高々 1 本)で vev_e を xx、yy、または辺 xyxy に置き換えて(前後の頂点が x,yx,y のどちらと隣接するか、端点なら x,yx,y のどちらが AA や BB に属するかに合わせて選びます)、GG の kk 本の道が得られます。よって G/eG/e にはそのような kk 本はなく、帰納法の仮定から、G/eG/e には AA–BB 道をなくす頂点集合 YY で ∣Y∣≤k−1|Y|\le k-1 のものがあります。ve∉Yv_e\notin Y なら YY は GG でも AA–BB 道をなくす(G−YG-Y の AA–BB 道は G/e−YG/e-Y の AA–BB 歩道を与える)ので、kk の最小性に反します。よって ve∈Yv_e\in Y で、X=(Y∖{ve})∪{x,y}X=(Y\setminus\{v_e\})\cup\{x,y\} は GG の AA–BB 道をなくす集合で ∣X∣≤k|X|\le k、したがって ∣X∣=k|X|=k です。

G−eG-e を見る. G−eG-e の中で AA–XX 道をなくす頂点集合 ZZ を取ります。GG の AA–BB 道 PP は XX の頂点を通るので、PP を AA 側からたどって最初に XX に出会うまでの部分は AA–XX 道で、XX の頂点を 1 つしか含まないので辺 e=xye=xy を使いません。これは G−eG-e の AA–XX 道なので ZZ の頂点を通ります。よって ZZ は GG の AA–BB 道もなくし、∣Z∣≥k|Z|\ge k です。G−eG-e は辺が少ないので、帰納法の仮定から頂点を共有しない AA–XX 道が kk 本あります。各道を最初に XX に出会ったところで打ち切ると、∣X∣=k|X|=k なので、XX の各頂点がちょうど 1 本の終点になり、各道は終点以外で XX と交わりません。同様に、頂点を共有しない XX–BB 道が kk 本あり、XX の各頂点がちょうど 1 本の始点で、始点以外で XX と交わりません。

つなぐ. AA–XX 道と XX–BB 道が XX の外の頂点 zz を共有したとすると、前者を AA から zz まで、後者を zz から BB までたどる歩道は XX を通らない AA–BB 歩道となり、XX の性質に反します。よって、XX の各頂点で 2 本の道をつなぐと、頂点を共有しない AA–BB 道が kk 本でき、仮定に反します。

定理 5.4 の 1 は、G−{s,t}G-\{s,t\} で A=N(s)A=N(s)、B=N(t)B=N(t) とした場合です。

  • R. Diestel, Graph Theory, Graduate Texts in Mathematics 173, Springer — 第 3 章(連結度、Menger の定理)、第 6 章(フロー)。
  • J. A. Bondy, U. S. R. Murty, Graph Theory, Graduate Texts in Mathematics 244, Springer, 2008 — 連結度とフローの章。
  • L. R. Ford, D. R. Fulkerson, Flows in Networks, Princeton University Press, 1962.
  • J. Edmonds, R. M. Karp, “Theoretical improvements in algorithmic efficiency for network flow problems”, J. ACM 19 (1972), 248–264.
  • V. Chvátal, P. Erdős, “A note on Hamiltonian circuits”, Discrete Math. 2 (1972), 111–113.

このテーマの 100 本ノック(50 問)

執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12

この記事の誤りを報告する ・運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記

© 2026 夢現技研合同会社 ・コード例は MIT ライセンスです。