跳到主要内容

京都大学 情報学研究科 数理工学専攻 2022年8月実施 グラフ理論

Author

祭音Myyura

Description

日本語版

非負実数全体の集合を R+\mathbb{R}_+ で表す.N=[G,c]N=[G, c] を点集合 VV 枝集合 EE をもつ単純有向グラフ G=(V,E)G=(V, E) および容量関数 c:ER+c: E \rightarrow \mathbb{R}_+ からなるネットワークとする. 点の部分集合 X,YVX, Y \subseteq V に対し,XX 内の点から YY 内の点へ向かう枝の集合を E(X,Y)E(X, Y) と記す. 指定された二点 s,tVs, t \in V に対し,次を満たす関数 f:ER+f: E \rightarrow \mathbb{R}_+(s,t)(s, t)-フローと呼ぶ.

流量保存則: eE({v},V{v})f(e)eE(V{v},{v})f(e)=0,vV{s,t},容量制約: f(e)c(e),eE.\begin{aligned} &\text{流量保存則: } \sum_{e\in E(\{v\}, V\setminus \{v\})} f(e) - \sum_{e \in E(V \setminus \{v\}, \{v\})} f(e) = 0, \forall v \in V \setminus \{s, t\}, \\ &\text{容量制約: } f(e) \le c(e), \forall e \in E. \end{aligned}

(s,t)(s, t)-フロー ff の流量 val(f)\text{val}(f)

val(f):=eE({s},V{s})f(e)eE(V{s},{s})f(e)\text{val}(f) := \sum_{e\in E(\{s\}, V \setminus \{s\})} f(e) - \sum_{e\in E(V \setminus \{s\}, \{s\})} f(e)

で定める.また sX,tVXs \in X, t \in V \setminus X を満たす点の部分集合 XVX \subseteq V(s,t)(s, t)-カットと呼び,その容量 cap(X)\text{cap}(X)

cap(X):=eE(X,VX)c(e)\text{cap}(X) := \sum_{e \in E(X, V \setminus X)} c(e)

で定める.以下の問いに答えよ.

(i) 任意の (s,t)(s, t)-フロー ff(s,t)(s, t)-カット XX に対し以下が成り立つことを証明せよ.

val(f)=eE(X,VX)f(e)eE(VX,X)f(e)cap(X).\text{val}(f) = \sum_{e \in E(X, V \setminus X)}f(e) - \sum_{e \in E(V\setminus X, X)} f(e) \le \text{cap}(X).

(ii) 与えられた (s,t)(s, t)-フローf に対して定められる残余ネットワーク Nf=[Gf=(V,Ef),cf]N_f = [G_f = (V, E_f ), c_f] の作り方を説明せよ.

(iii) 残余ネットワーク NfN_fss から tt へ至る有向路を持たないような (s,t)(s, t)-フロー ff に対し,SSNfN_f において ss から到達可能な点の集合とする.このとき NN において val(f)=cap(S)\text{val}(f) = \text{cap}(S) が成り立つことを証明せよ.

(iv) XXNN において容量 cap(X)\text{cap}(X) を最小にする任意の (s,t)(s, t)-カットとする.このとき (iii) の残余ネットワーク NfN_f において ss から VXV \setminus X のどの点へも到達できないことを証明せよ.

English Version

Let R+\mathbb{R}_+ denote the set of nonnegative reals. Let N=[G,c]N=[G, c] be a network that consists of a simple directed graph G=(V,E)G=(V, E) with a vertex set VV and an edge set EE and a capacity function c:ER+c: E \rightarrow \mathbb{R}_+. For vertex subsets X,YVX, Y \subseteq V, let E(X,Y)E(X, Y) denote the set of edges that leave a vertex in XX and enter a vertex in YY. For two designated vertices s,tVs, t \in V , an (s,t)(s, t)-flow is defined to be a function f:ER+f: E \rightarrow \mathbb{R}_+ which satisfies the following:

Flow conservation law: eE({v},V{v})f(e)eE(V{v},{v})f(e)=0,vV{s,t},Capacity constraint: f(e)c(e),eE.\begin{aligned} &\text{Flow conservation law: } \sum_{e\in E(\{v\}, V\setminus \{v\})} f(e) - \sum_{e \in E(V \setminus \{v\}, \{v\})} f(e) = 0, \forall v \in V \setminus \{s, t\}, \\ &\text{Capacity constraint: } f(e) \le c(e), \forall e \in E. \end{aligned}

The flow value val(f)\text{val}(f) of an (s,t)(s, t)-flow f is defined to be

val(f):=eE({s},V{s})f(e)eE(V{s},{s})f(e)\text{val}(f) := \sum_{e\in E(\{s\}, V \setminus \{s\})} f(e) - \sum_{e\in E(V \setminus \{s\}, \{s\})} f(e)

An (s,t)(s, t)-cut is defined to be a vertex subset XVX \subseteq V such that sXs \in X and tVXt \in V \setminus X, and its capacity cap(X)\text{cap}(X) is defined to be

cap(X):=eE(X,VX)c(e)\text{cap}(X) := \sum_{e \in E(X, V \setminus X)} c(e)

Answer the following questions.

(i) Prove that for any (s,t)(s, t)-flow ff and any (s,t)(s, t)-cut XX

val(f)=eE(X,VX)f(e)eE(VX,X)f(e)cap(X).\text{val}(f) = \sum_{e \in E(X, V \setminus X)}f(e) - \sum_{e \in E(V\setminus X, X)} f(e) \le \text{cap}(X).

holds.

(ii) For a given (s,t)(s, t)-flow ff, show how to construct its residual network Nf=[Gf=(V,Ef),cf]N_f = [G_f = (V, E_f ), c_f].

(iii) For an (s,t)(s, t)-flow ff such that the residual network NfN_f has no directed path from ss to tt, let SS denote the set of all vertices reachable from ss in NfN_f . Prove that val(f)=cap(S)\text{val}(f) = \text{cap}(S) holds in NN.

(iv) Let XX be an (s,t)(s, t)-cut with the minimum capacity cap(X)\text{cap}(X) in NN. Prove that no vertex in VXV \setminus X is reachable from ss in the residual network NfN_f in (iii).

题目描述

R+\mathbb R_+ 为非负实数集。网络 N=[G,c]N=[G,c] 由简单有向图 G=(V,E)G=(V,E) 及容量函数 c:ER+c:E\to\mathbb R_+ 构成。对 X,YVX,Y\subseteq V,令 E(X,Y)E(X,Y) 为从 XX 指向 YY 的边集。对指定顶点 s,ts,t(s,t)(s,t) 流是满足中间顶点流量守恒及 0f(e)c(e)0\le f(e)\le c(e) 的函数 f:ER+f:E\to\mathbb R_+,其流值为

val(f)=eE({s},V{s})f(e)eE(V{s},{s})f(e).\operatorname{val}(f)= \sum_{e\in E(\{s\},V\setminus\{s\})}f(e) -\sum_{e\in E(V\setminus\{s\},\{s\})}f(e).

满足 sXs\in XtXt\notin XXVX\subseteq V 称为 (s,t)(s,t) 割,容量为

cap(X)=eE(X,VX)c(e).\operatorname{cap}(X)= \sum_{e\in E(X,V\setminus X)}c(e).

回答:

  1. 对任意 (s,t)(s,t)ff(s,t)(s,t)XX,证明
    val(f)=eE(X,VX)f(e)eE(VX,X)f(e)cap(X).\operatorname{val}(f)= \sum_{e\in E(X,V\setminus X)}f(e) -\sum_{e\in E(V\setminus X,X)}f(e) \le\operatorname{cap}(X).
  2. 说明如何为给定流 ff 构造残量网络 Nf=[Gf=(V,Ef),cf]N_f=[G_f=(V,E_f),c_f]
  3. NfN_f 不含从 sstt 的有向路,令 SS 为其中从 ss 可达的顶点集。证明 val(f)=cap(S)\operatorname{val}(f)=\operatorname{cap}(S)
  4. XXNN 中任意一个最小容量 (s,t)(s,t) 割。证明在第 3 问的残量网络 NfN_f 中,从 ss 无法到达 VXV\setminus X 中的任何顶点。

考点

  • 流—割弱对偶:由割上的净流恒等式及容量约束证明任意流值不超过任意割容量。
  • 残量网络与无增广路判据:构造正反向残量边,并由从源点的可达集证明流值等于某个割容量。
  • 最大流—最小割定理的结构结论:在达到最优值后比较任意最小割,证明残量可达集包含于其源侧。

Kai

(i)

We can rewrite the flow conservation law for any node uV{s,t}u \in V \setminus \{s, t\} as

vVf(u,v)vVf(v,u)=0\sum_{v \in V}f(u, v) - \sum_{v \in V} f(v, u) = 0

then we have

val(f)=eE({s},V{s})f(e)eE(V{s},{s})f(e)=vVf(s,v)vVf(v,s)+uX{s}(vVf(u,v)vvf(v,u))\begin{aligned} \text{val}(f) &= \sum_{e\in E(\{s\}, V \setminus \{s\})} f(e) - \sum_{e\in E(V \setminus \{s\}, \{s\})} f(e) \\ &= \sum_{v \in V} f(s, v) - \sum_{v \in V} f(v, s) + \sum_{u \in X - \{s\}} \Big(\sum_{v \in V} f(u, v) - \sum_{v \in v} f(v, u) \Big) \end{aligned}

Expanding the right-hand summation and regrouping terms yields

val(f)=vVf(s,v)vVf(v,s)+uX{s}vVf(u,v)uX{s}vVf(v,u)=vV(f(s,v)+uX{s}f(u,v))vV(f(v,s)+uX{s}f(v,u))=vVuXf(u,v)vVuXf(v,u)=vXuXf(u,v)+vVXuXf(u,v)vXuXf(v,u)vVXuXf(v,u)\begin{aligned} \text{val}(f) &= \sum_{v \in V} f(s, v) - \sum_{v \in V}f(v,s) + \sum_{u \in X \setminus \{s\}} \sum_{v \in V} f(u, v) - \sum_{u \in X \setminus \{s\}} \sum_{v \in V} f(v,u) \\ &= \sum_{v \in V} \Big(f(s,v) + \sum_{u \in X \setminus \{s\}}f(u,v) \Big) - \sum_{v \in V} \Big(f(v,s) + \sum_{u\in X \setminus \{s\}} f(v, u) \Big) \\ &= \sum_{v \in V} \sum_{u\in X} f(u, v) - \sum_{v \in V}\sum_{u \in X} f(v, u) \\ &= \sum_{v \in X} \sum_{u\in X} f(u, v) + \sum_{v \in V \setminus X} \sum_{u\in X} f(u, v) - \sum_{v \in X} \sum_{u \in X} f(v, u) - \sum_{v \in V \setminus X} \sum_{u \in X} f(v, u) \end{aligned}

The two summations vXuXf(u,v)\sum_{v \in X} \sum_{u\in X} f(u, v) and vXuXf(v,u)\sum_{v \in X} \sum_{u \in X} f(v, u) are actually the same, since for all vertices x,yVx, y \in V , the term f(x,y)f(x,y) appears once in each summation. therefore

val(f)=vVXuXf(u,v)vVXuXf(v,u)=eE(X,VX)f(e)eE(VX,X)f(e)eE(X,VX)f(e)eE(X,VX)c(e)      (capacity constraint)=cap(X)\begin{aligned} \text{val}(f) &= \sum_{v \in V \setminus X} \sum_{u\in X} f(u, v) - \sum_{v \in V \setminus X} \sum_{u \in X} f(v, u) \\ &= \sum_{e \in E(X, V \setminus X)}f(e) - \sum_{e \in E(V\setminus X, X)} f(e) \\ &\le \sum_{e \in E(X, V \setminus X)}f(e) \\ &\le \sum_{e \in E(X, V \setminus X)}c(e) \ \ \ \ \ \ \text{(capacity constraint)} \\ &= \text{cap}(X) \end{aligned}

(ii)

We define the residual capacity cf(u,v)c_f (u, v) by

cf(u,v)={c(u,v)f(u,v)if (u,v)Ef(v,u)if (v,u)E0otherwise.c_f(u,v) = \left\{ \begin{aligned} &c(u,v) - f(u, v) &\text{if } (u, v) \in E \\ &f(v, u) &\text{if } (v, u) \in E \\ &0 &\text{otherwise.} \end{aligned} \right.

and the edge set EfE_f by

Ef={(u,v)V×V  cf(u,v)>0}E_f = \{(u,v) \in V \times V \ \mid \ c_f(u,v) > 0\}

(iii)

To prove val(f)=cap(S)\text{val}(f) = \text{cap}(S), we prove the following two conditions:

(a) All outgoing edges from the cut SS must be fully saturated.

(b) All incoming edges to the cut SS must have zero flow.

Assume that there exists an outgoing edge (u,v)E(u, v) \in E, uSu \in S, vVSv \in V \setminus S such that it is not saturated, i.e. f(u,v)<c(u,v)f(u, v) < c(u, v). This implies that there exists an edge (u,v)Ef(u, v) \in E_f, uSu \in S, vVSv \in V \setminus S, therefore there exists a path from ss to vv, which is contradictory to the definition of SS. Hence, any outgoing edge (u,v)(u, v) is fully saturated.

Assume that there exists an incoming edge (v,u)E(v, u) \in E, uSu \in S, vVSv \in V \setminus S such that it carries some non-zero flow, i.e. f(v,u)>0f(v, u) > 0. This implies that there exists an edge (u,v)Ef(u, v) \in E_f, uSu \in S, vVSv \in V \setminus S, therefore there exists a path from ss to vv, which is contradictory to the definition of SS. Hence, any incoming edge (v,u)(v, u) must have zero flow.

Finally, we have

val(f)=eE(S,VS)f(e)eE(VS,S)f(e)=eE(S,VS)c(e)0=Cap(S)\begin{aligned} \text{val}(f) &= \sum_{e \in E(S, V \setminus S)}f(e) - \sum_{e \in E(V\setminus S, S)} f(e) \\ &= \sum_{e \in E(S, V \setminus S)}c(e) - 0 \\ &= \text{Cap}(S) \end{aligned}

(iv)

Prove by contradiction: W.l.o.g we assume that there exists only one vertex vS(VX)v^* \in S \cap (V \setminus X), i.e. SX={v}S \setminus X = \{v^*\}.

From the flow conservation law we have

uVf(u,v)=uVf(v,u)uSXf(u,v)+uVSf(u,v)=uSXf(v,u)+uVSf(v,u)\begin{aligned} \sum_{u \in V} f(u, v^*) &= \sum_{u \in V} f(v^*, u) \\ \sum_{u \in S \cap X} f(u, v^*) + \sum_{u \in V \setminus S} f(u, v^*) &= \sum_{u \in S \cap X} f(v^*, u) + \sum_{u \in V \setminus S} f(v^*, u) \end{aligned}

From (iii) we know that

uVSf(u,v)=0\sum_{u \in V \setminus S} f(u, v^*) = 0

and

uVSf(v,u)=uVSc(v,u)\sum_{u \in V \setminus S} f(v^*, u) = \sum_{u \in V \setminus S} c(v^*, u)

Hence we have

uVSc(v,u)=uSXf(u,v)uSXf(v,u)\sum_{u \in V \setminus S} c(v^*, u) = \sum_{u \in S \cap X} f(u, v^*) - \sum_{u \in S \cap X} f(v^*, u)

Since vv^* is reachable from ss in NfN_f, we know that either

(a) there exists an edge uv,uSXu v^*, u \in S \cap X such that cf(uv)>0c_f(u v^*) > 0, i.e., f(u,v)<c(u,v)f(u, v^*) < c(u, v^*)

or

(b) there exists an edge vu,uSXv^* u, u \in S \cap X such that cf(vu)>0c_f(v^* u) > 0. i.e., f(v,u)>0f(v^*, u) > 0

Both cases imply that

uVSc(v,u)<uSXc(u,v)\sum_{u \in V \setminus S} c(v^*, u) < \sum_{u \in S \cap X} c(u, v^*)

Then we consider the capacity of cut X{v}X \cup \{v^*\}

Cap(X{v})=Cap(X)+uVSc(v,u)uSXc(u,v)<Cap(X)\begin{aligned} \text{Cap}(X \cup \{v^*\}) &= \text{Cap} (X) + \sum_{u \in V \setminus S} c(v^*, u) - \sum_{u \in S \cap X} c(u, v^*) \\ &< \text{Cap} (X) \end{aligned}

which is contradictory to the fact that XX is a minimum cut.