Network Flow
2020-1ํ๊ธฐ, ๋ํ์์ โ์๊ณ ๋ฆฌ์ฆโ ์์ ์ ๋ฃ๊ณ ๊ณต๋ถํ ๋ฐ๋ฅผ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์ง์ ์ ์ธ์ ๋ ํ์์ ๋๋ค :)
์ด๋ฒ ํฌ์คํธ์์๋ Network Flow ๋ฌธ์ ์ ๋ํ ๊ฐ์์ Network Flow ๋ฌธ์ ์ ํต์ฌ์ด ๋๋ ์ ๋ฆฌ์ธ โMax-Flow Min-Cut Theoremโ์ ๋ํด ๋ค๋ฃน๋๋ค. ์ค์ ์์ ์ ์ฝ๋๋ ์ด์ด์ง๋ ํฌ์คํธ Ford-Fulkerson & Edmons-Karp Algorithm๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์! ๐
Introduction to Network Flow
<Network Flow> ๋ฌธ์ ๋ ์๋์ ๊ฐ์ Directed Graph $G$์ ๋ํด source $S$์์ sink $t$๋ก ํ๋ฌ๊ฐ๋ Flow์ ๅ์ ์ต๋ํ ํ๋ ๋ฌธ์ ๋ค.
์ข๋ formal ํ๊ฒ ๊ธฐ์ ํ๋ฉด ์๋์ ๊ฐ๋ค.
For a directed graph $G = (V, E)$, we have two special nodes source $s$ and sink $t$. And each edges has capacity $c_e > 0$, respectively.
We want to send as much flow as possible from $s$ to $t$ s.t. $0 \le f_e \le c_e$ for all $e \in E$.
But for each node $u$, the flow must be conserved with $\displaystyle\sum_{(w, u) \in E} f_{wu} = \sum_{(u, z) \in E} f_{uz}$.
// node $u$์์ ๋ค์ด์ค๋ ์๊ณผ ๋๊ฐ๋ ์์ด ๊ฐ์์ผ ํ๋ค.
Also the size of flow $\text{size}(f)$ should be
\[\text{size}(f) = \sum_{(s, u) \in E} f_{su} = \sum_{(v, t) \in E} f_{vt}\]์์ ๊ฐ์ด ๊ธฐ์ ๋ <Network Flow> ๋ฌธ์ ๋ฅผ ์ดํด๋ณด๋ฉด ์ ๋ง ์ ๋(Flow)์ ๋ํ ๋น์ฐํ ์๊ธฐ๋ค์ ํ๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๋ฐ ๋น์ฐํ ์๊ธฐ๋ค์ด ์ ๋ถ constraint๊ฐ ๋๋ค๋๊ฒ ํ ์ด์ง๋งโฆ
Residual Network
<Networ Flow> ๋ฌธ์ ๋ ๊ธฐ์กด์ Graph $G$์์ <Residual Network>๋ผ๋ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ถ(construction) ํ๋ฉด์ ํด๊ฒฐํ ์ ์๋ค! ๐ ์๊ณ ๋ฆฌ์ฆ์ด ํ๋ฒ์ ์ดํด ๋์ง๋ ์์ผ๋ ์ฃผ์ ๊น๊ฒ ์ดํด๋ณด์!
Find an $s-t$ path whose edges $(u, v)$ can be of two types:
1. $(u, v) \in E$ and $f_{uv} < c_{uv}$
2. $(v, u) \in E$ and $f_{vu} > 0$
์๋ฅผ ํตํด ์์ ๊ท์น์ ์ดํดํด๋ณด์.
์ฐ๋ฆฌ๋ ์ผ์ชฝ์ ๊ทธ๋ํ์์ ์์ํด ์ค๋ฅธ์ชฝ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์ ํ๋ค.
๋จผ์ ์ฒซ ๋ฒ์งธ ๊ท์น์ ๋ฐ๋ฅด๋ฉด $s-t$ path๋ $s \rightarrow a \rightarrow t$, $s \rightarrow b \rightarrow t$ ๋๋ $s \rightarrow a \rightarrow b \rightarrow t$์ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์๋ค. ์ฌ๊ธฐ์๋ $s \rightarrow a \rightarrow b \rightarrow t$์ ๊ฒฝ๋ก๋ก flow๋ฅผ ํ๋ ค๋ณด๋๋ค๊ณ ํ์.
๊ธฐ์กด์ ๋ฐฉ์์์๋ ๊ฐ์ด๋ฐ $a \rightarrow b$ ๋ฐฉํฅ์ผ๋ก flow๋ฅผ ํ๋ ค๋ณด๋๊ธฐ ๋๋ฌธ์ ๋์ด์ flow๋ฅผ ํ๋ ค๋ณด๋ผ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋ฒ์งธ ๊ท์น์ ์ ์ฉํ๋ฉด, ์ถ๊ฐ๋ก flow๋ฅผ ํ๋ ค๋ณด๋ผ ์ ์๋ค!!
๋ ๋ฒ์งธ ๊ท์น์ ์ ์ฉํ๋ฉด $s \rightarrow b \rightarrow a \rightarrow t$ ๊ฒฝ๋ก๋ก flow๋ฅผ ํ๋ ค๋ณด๋ผ ์ ์๋ค! ์ด๋, $b \rightarrow a$๋ ๊ธฐ์กด ๊ทธ๋ํ์๋ ์๋ ๊ฐ์ ์ด์ง๋ง, ๋ ๋ฒ์งธ ๊ท์น์ ์ํด $f_{ab} = 1 > 0$์ด๊ธฐ ๋๋ฌธ์ $(b, a) \in E$์ ๋ํ edge๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค!!
์ด์ , ๊ฒฝ๋ก $s \rightarrow a \rightarrow b \rightarrow t$์ $s \rightarrow b \rightarrow a \rightarrow t$๋ฅผ ์ข ํฉํ๋ฉด ์ฐ๋ฆฌ๋ ์ค๋ฅธ์ชฝ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋๋ฉฐ, network์ ์ต๋ ์ ๋์ 2๋ผ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋๋ค!
<Network Flow> ์๊ณ ๋ฆฌ์ฆ์์๋ ์์ ๊ฐ์ ๊ณผ์ ์ ์ข๋ ํธํ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํด, $s-t$ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋งค๋ฒ์ ๊ณผ์ ์์ <Residual Graph> $G^f = (V, E^f)$๋ผ๋ ๊ทธ๋ํ๋ฅผ ๊ฐฑ์ ํ๋ฉฐ ์ฌ์ฉํ๋ค. ์ฐ๋ฆฌ๋ Residual Graph $G^f$์์ Network Flow ๋ฌธ์ ๋ฅผ ํด๊ฒฐํจ์ผ๋ก์จ ๊ธฐ์กด์ ๊ทธ๋ํ $G$์ Network Flow ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค! ์ฆ $G \equiv G^f$, $G$์ $G^f$๊ฐ ๋์น์ธ ์ ์ด๋ค! ๐ฒ
<Residual Graph> $G^f$์ ๋ํด formal ํ๊ฒ ๊ธฐ์ ํ๋ฉด ์๋์ ๊ฐ๋ค.
During the algorithm, we maintain a residual graph $G^f = (V, E^f)$, which has two types of edges with residual capacities
\[c^f_{uv} = \begin{cases} c_{uv} - f_{uv} & \text{if} \; (u, v) \in E \; \text{and} \; f_{uv} < c_{uv} \\ f_{vu} & \text{if} \; (v, u) \in E \; \text{and} \; f_{vu} > 0 \; ( \equiv \text{$(u, v)$ is reverse edge}) \end{cases}\]<Network Flow> ๋ฌธ์ ๋ฅผ <Residual Network>๋ก ํธ๋ ๊ฒ์ ์ฌ์ค Linear Programming์ <Simplex Method>๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ผ๊ณ ํ๋ค. ์ด์ ๋ํด์๋ ์ถํ์ ๋ณ๋์ ํฌ์คํธ์์ ๋ ์์ธํ ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค ๐
Residual Flow๋ ์์ฐ์ค๋ฌ์ด ์ ๊ทผ์ธ๊ฐ?
Residual Graph $G^f$ ๊ฐ๋ ์ ์ฒ์ ๋ฐฐ์ธ ๋๋ ๊ฐ์ ์ ์ ๋ $f$๊ฐ ํ๋ฅด๋ฉด ๋ฐ๋ํธ์ $f$ ๋งํผ์ capacity๊ฐ ์๊ธด๋ค๋ ์ฌ์ค์ ์ ์ดํดํ์ง ๋ชปํ๋ค. ๊ทธ๋ฅ โ์, ๊ทธ๋ฅ ํ ํฌ๋์ธ๊ฐ ๋ณด๊ตฌ๋โํ๊ณ ๋ฐ์๋ค์๋ค. ๊ทธ๋ฌ๋ ์ด ๋ถ๋ถ ๋๋ฌธ์ Network Flow๋ฅผ ์ ๋๋ก ๋ฐ์๋ค์ด์ง ๋ชป ํ๊ณ ๊ณ์ ๊ฑท๋๊ณ ์์๋ค. ์ด๋ฒ ๋ฌธ๋จ์์๋ ๋ณธ์ธ์ด ๋์ค์ ์ดํดํ๊ฒ ๋ Residual Flow๋ฅผ ์ ์ค๋ช ํด๋ณด๋ ค๊ณ ํ๋ค.
๋ค์ ์ด๋ฆ์ผ๋ก ๋์์๋ณด์. Given graph์์ $s \rightarrow a \rightarrow b \rightarrow t$์ ๊ฒฝ๋ก๋ก flow๋ฅผ ํ๋ ค๋ณด๋ด๋ฉด Residual Flow๋ฅผ ์ฐ์ง ์์ผ๋ฉด ๋์ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค. Residual Flow๋ฅผ ์ ์ฉํ๋ฉด $b \rightarrow a$์ capacity $1$์ด ์ถ๊ฐ๋์ด $s \rightarrow b \rightarrow a \rightarrow t$๊ฐ ๊ฐ๋ฅํด์ ธ Final flow๋ฅผ ์ป์ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ $b \rightarrow a$์ capacity $1$์ ์ถ๊ฐํ๋๊ฒ ๋ง์ด ๋๋ ๊ฑธ๊น?
๋๋๊ฒ๋ ๋ง์ด ๋๋ค! ๋ค๋ฅธ ๊ฑด ๋ค ์ ๊ฑฐํ๊ณ $a \; โ \; b$ ๊ตฌ๊ฐ๋ง ๋ณด์. $a \rightarrow b$๋ก 1๋งํผ์ ์ ๋์ด ํ๋ฅธ๋ค๊ณ ํ์. ๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ์ ๋ 1์ด ํ๋ฅด๋ ์ํ์์ ๋ฐ๋ ๋ฐฉํฅ $a \leftarrow b$๋ก 1๋งํผ์ ์ ๋์ ํ๋ ค๋ณด๋ธ๋ค๋ฉด ๋ ์ ๋์ ์์๋์ด 0์ด ๋ ๊ฒ์ด๋ค. residual flow๋ ๋ฐ๋ก ์ด๊ฒ์ ๋งํ๋ค. ์ด๋ฏธ ๊ฐ์ ์ ํ๋ฅด๋ flow $f_e$์ ๋ํด ๊ทธ๊ฑธ ์์ํ๋ ๊ฑด ๊ฐ๋ฅํ๋ค. ๊ทธ๋์ ๊ทธ๊ฑธ ์์ํ๋ ์์ด ํ๋ฅผ ์ ์๋๋ก ๊ธฐ์กด ๊ทธ๋ํ $G$๋ฅผ ์ฝ๊ฐ ์์ ํ๋ ๊ฑฐ๋ค. $c_eโ = f_e$๊ฐ ๋๋๋ก ๋ง์ด๋ค!
์ด๋ฐ ์ ๊ทผ์ด ์์ฐ์ค๋ฝ๋ค๊ณ ์ฌ๊ธฐ๊ฒ ๋๋ ์ ์ residual flow๋ ๊ผญ ๊ฐ์ ์ ํ๋ฅด๋ flow ๋งํผ๋ง ์๊ธด๋ค๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ์ด๋ฏธ ํ๋ฅด๋ flow $f_e$๋ณด๋ค ๋ง์ residual flow๊ฐ ํ๋ฌ์ $f_e$๊ฐ ์์๊ฐ ๋๋ ํ์์ ๋ฐฉ์งํ๋ค. ์ด ์ฌ์ค๋ค์ ์ดํดํ๋ค๋ฉด residual flow๋ ๊ฝค ์์ฐ์ค๋ฌ์ด ์ ๊ทผ์ด๋ผ๊ณ ๊นจ๋ซ๊ฒ ๋ ๊ฒ์ด๋ค.
Optimality
์์ ๊ฐ์ ์ ๊ทผ๋ฒ์ด Maximum Flow๋ฅผ ๋ณด์ฅํ๋์ง๋ฅผ ํ์ธํด๋ณด์! ์ค๋ช ์ ํธ์๋ฅผ ์ํด ์ด๋ฏธ Maximum Flow๋ฅผ ๊ตฌํ Residual Graph๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ฒ ๋ค.
๊ทธ๋ํ $G$๋ฅผ $s$๋ฅผ ํฌํจํ๋ $L = \{ s, a, c\}$, $t$๋ฅผ ํฌํจํ๋ $R=\{ b, d, e, t\}$๋ก ๋ถํ ํด๋ณด์. ์ด๋ ๊ฒ vertex set์ disjoint set $(L, R)$๋ก ๋ถํ ํ๋ ๊ฒ์ $(s, t)$-cut๋๋ ๊ฐ๋จํ๊ฒ cut์ด๋ผ๊ณ ํ๋ค. ์ด๋, $L-R$์ ์๋ edge์ ์งํฉ์ cut-set๋ผ๊ณ ํ๋ฉฐ, ์ด cut-set์ capacity์ ์ดํฉ์ด $(s, t)$-cut์ capacity๊ฐ ๋๋ค. ์ฌ์ค $s$์ $t$๋ฅผ disjoint set์ผ๋ก ๋ถํ ํ๋ ๊ฐ๋ฅํ cut์ ์ ๋ง ๋ง๋ค. ์ด๋, minimum cut ์ค์ฌ์ min-cut์ cut capacity๊ฐ ์ต์๊ฐ ๋๋ cut์ ๋งํ๋ค.
$s \rightarrow t$ ๋ฐฉํฅ์ผ๋ก ํ๋ฅด๋ ๋ชจ๋ ์ ๋(flow)์ $L$์์ $R$์ ์ง๋์ผ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ค ์ ๋๋ $L$๊ณผ $R$ ์ฌ์ด๋ฅผ ์๋ edge์ capacity ๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ์ด๊ฒ์ ๋คํธ์ํฌ์ ์ ๋(flow)์ ์ดํฉ์ด $(s, t)$-cut์ capacity๋ฅผ ๋์ ์ ์์์ ์๋ฏธํ๋ค.
Lemma 1.
Pick any $(s, t)$-cut $(L, R)$ and any flow $f$, then $\text{size}(f) \le \text{capacity}(L, R)$.
์ฐ๋ฆฌ๋ ์์ง $G$๋ฅผ ์ด๋ป๊ฒ ๋ถํ ํด์ผ ํ ์ง ์ ํ์ง ์์๋ค. ์์ ๋ช ์ ๋ ๊ทธ๋ํ๋ฅผ ์ด๋ป๊ฒ ๋ถํ ํ๋์ง์ ์๊ด ์์ด ๋คํธ์ํฌ์ ํ๋ฅด๋ ์ ์ฒด ์ ๋์ $\text{capacity}(L, R)$ ๋์ง ๋ชปํ๋ค, ์ฆ upper bound๋ก ๊ฐ์ง๋ค๋ฅผ ๋งํ ๋ฟ์ด๋ค.
์ด๋ฒ์๋ $(s, t)$-cut์ ํ๋ฅด๋ flow์ ๋ํ Lemma๋ฅผ ์ดํด๋ณด์.
Lemma 2.
For two vertext set $L$ and $R$, $v$ is an element of $R$. Remove $v$ from $R$ and place it in $S$, and now re-evaluate the flow of new cut $(L \cup \{ v\}, R \setminus \{ v \})$.
Letโs define two edge set $\text{In}(v)$ and $\text{Out}(v)$, they are incoming edges and outcoming edges of $v$ each. Then, by the conservation of flow:
\[\sum_{(u, v) \in \text{In}(v)} f(u, v) = \sum_{(v, w) \in \text{Out}(v)} f(v, w)\]Then, we partition $\text{In}(v)$ and $\text{Out}(v)$ based on where the end points of the edges fall as follows:
\[\begin{aligned} \text{In}(v)_L &= \left\{ (u, v) \in E \mid u \in L \right\} \\ \text{In}(v)_R &= \left\{ (u, v) \in E \mid u \in R \right\} \\ \text{Out}(v)_L &= \left\{ (v, w) \in E \mid w \in L \right\} \\ \text{Out}(v)_R &= \left\{ (v, w) \in E \mid w \in R \right\} \end{aligned}\]Moving $v$ into $L$ will result in losing $v$โs contribution to the original cut capacity, but also in gaining the capacity of the outgoing edges from $v$ thus:
\[\begin{aligned} &f(L \cup \{ v \}, R \setminus \{ v\}) \\ &= f(L, R) - \sum_{(u, v) \in \text{In}(v)_L} f(u, v) + \sum_{(v, w) \in \text{Out}(v)_L} f(v, w) - \sum_{(u, v) \in \text{In}(v)_R} f(u, v) + \sum_{(v, w) \in \text{Out}(v)_R} f(v, w) \\ &= f(L, R) - \cancel{\left(\sum_{(u, v) \in \text{In}(v)} f(u, v)\right)} + \cancel{\left(\sum_{(v, w) \in \text{Out}(v)} f(v, w)\right)} \\ &= f(L, R) \end{aligned}\]์์ ๊ฒฐ๊ณผ๋ ์ด๋ค cut์ ์ก๋ ์๊ด์์ด Network์ ํ๋ฅด๋ flow์ ์ต์ข ๊ฐ์ ๋ชจ๋ ๋์ผํ๋ค๊ณ ๋งํ๋ค! ๊ทธ๋์ ์ด flow์ ์ต์ข ๊ฐ์ value of flow, $\text{val}(f)$๋ผ๊ณ ๋ถ๋ฅด๊ฒ ๋ค.
\[\text{val}(f) = f(L, R) = f(\{s\}, V \setminus \{s\}) = \sum_{(s, u) \in E} f(s, u)\]์ด ์ฌ์ค์ ๋ฐํ์ผ๋ก Lemma 1์ ๋ค์ ์ฐ๋ฉด ์๋์ ๊ฐ๋ค.
\[\text{val}(f) \le \text{capacity}(L, R)\]์์ง ํฌ์คํธ์์๋ ์ ๋ค๋ค์ง๋ง Ford-Fulkerson์ ์ํํ๋ฉฐ Residual Graph $G^f$๋ฅผ ์ป์๋ค๊ณ ํด๋ณด์. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋์ final flow๋ฅผ $f$๋ผ๊ณ ํ์. ๊ทธ๋ ๋ค๋ฉด ๊ทธ๋ํ $G^f$ ์๋์์ source $s$๋ ๋์ด์ sink $t$๋ก reachable ํ์ง ์์ ๊ฒ์ด๋ค.
$L$์ ๋ ธ๋ $s$์์ reachableํ ๋ ธ๋์ ์งํฉ์ผ๋ก ์ค์ ํ๊ณ , $R$์ $R = V - L$๋ก ์ค์ ํ์. ๊ทธ๋ฌ๋ฉด final flow $f$์ ๋ํด ์๋๊ฐ ์ฑ๋ฆฝํ๋ค!
Lemma 3.
For the residual graph $G^f$ driven by Ford-Fulkerson(simplex method), the following holds
\[\text{size}(f) = \text{capacity}(L, R)\]Ford-Fulkerson์ผ๋ก ์ ๋๋๋ $(L, R)$ ๋ถํ ์ ๋ํด $\text{size}(f) = \text{capacity}(L, R)$๊ฐ ์ฑ๋ฆฝํจ์ ์ฆ๋ช ํด๋ณด์.
๋จผ์ $G^f$์ $L \rightarrow R$ ๋ฐฉํฅ์ edge๋ค์ ์ดํด๋ณด์. ์ด๋ฐ edge์ ๋ํด์๋ $f_e = c_e$๋ก full capacity ๋งํผ์ flow๊ฐ ํ๋ฅธ๋ค. ($f_e \ne c_e$๋ผ๋ฉด flow๋ฅผ ๋ ํ๋ ค๋ณด๋ผ ์ ์๊ธฐ ๋๋ฌธ์ final flow๋ผ๋ ๊ฐ์ ์ ์๋ฐฐํ๋ค.)
๋ค์์ผ๋ก $G^f$์ $L \leftarrow R$ ๋ฐฉํฅ์ edge๋ค์ ์ดํด๋ณด์. ์ด๋ฐ edge์ ๋ํด์๋ flow๊ฐ ์ ํ ํ๋ฅด์ง ์๋ $f_{eโ} = 0$์ด ๋๋ค. (๋ง์ฝ $f_{eโ} \ne 0$๋ผ๋ฉด $f_{eโ}$ ๋งํผ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก capacity๊ฐ ์๊ธด๋ค. ์ด๊ฒ์ ๋ฐ๋ผ flow๋ฅผ ๋ ํ๋ ค๋ณด๋ผ ์ ์๊ธฐ ๋๋ฌธ์ final flow ๊ฐ์ ์ ์๋ฐฐํ๋ค.)
๋ฐ๋ผ์, Ford-Fulkerson์ผ๋ก ์ ๋๋๋ $(L, R)$ ๋ถํ ์๋์์๋ $\text{size}(f)$๊ฐ ์ ํํ $L \rightarrow R$ ๋ฐฉํฅ์ capacity ๋งํผ ํ๋ฅธ๋ค! $\blacksquare$
๊ทธ๋ ๋ค๋ฉด Network Flow ๋ฌธ์ ์ ๋ชฉํ์ธ Max-Flow๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด์๋ ์ด๋ค $(s, t)$-cut์ ์ก์์ผ ํ ๊น? ์๋์ ๋ช ์ ๋ Max-Flow๋ฅผ ๋ณด์ฅํ๋ $(s, t)$-cut์ ๋ํด ๊ธฐ์ ํ๊ณ ์๋ค.
Theorem. Max-flow min-cut theorem (MFMC)
The size of the maximum flow in a network equals the capacity of the smallest $(s, t)$-cut1.
๋๋ ์ด๋ ๊ฒ ํํํ ์๋ ์๋ค.
The following statements are equivalent.
- $f$ is maximized.
- $G^f$ has no augmenting paths.
- There exists a cut $(L, R)$ such that $\text{capacity}(L, R) = \text{size}(f)$
์ด <MFMC Theorem>์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ดํด๋ณด์. Lemma 1, 2๋ฅผ ์ข ํฉํด ์ป์ ๊ฒฐ๋ก ์ ์ด๋ค cut $(L, R)$์ ์ก๋ ๊ทธ๋์ capacity๋ $\text{val}(f)$๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค์ด๋ค. <MFMC Theorem>์ capacity๊ฐ ์ต์๊ฐ ๋๋, ์ฆ $\text{capacity}(L, R) = \text{val}(f)$๊ฐ ๋๋ $(L, R)$ cut์ด ์กด์ฌํ์ง๋ง, ๊ทธ๊ฒ์ ์ค์ง $\text{val}(f)$๊ฐ ๋คํธ์ํฌ์ maximum flow์ผ ๋๋ง ์ฑ๋ฆฝํจ์ ๋งํ๋ค! (์ฆ, $(3) \implies (1)$๋ผ๋ ๋ง์ด๋ค.)
MFMC Theorem์ด ๊ธฐ์ ํ๋ 3๊ฐ์ง ๋ช ์ ๊ฐ ์๋ก Equivalent ํจ์ ์ฆ๋ช ํด๋ณด์. ์ฆ๋ช ์์๋ $(1) \implies (2)$, $(2) \implies (3)$, $(3) \implies (1)$ ์์๋ก ์งํํ๋ค.
1. $(1) \implies (2)$
Let $f$ be a max flow, and suppose $G^f$ still has an augmenting path $\mathcal{P}$ (๊ท๋ฅ๋ฒ). Then we can increase $\text{val}(f)$ by augmenting along the path $\mathcal{P}$. This contradicting the maximality of $f$.
$\therefore$ When the $f$ is maximized, $G^f$ should have no augmenting paths.
2. $(2) \implies (3)$
Suppose $G^f$ has no augmenting paths. Then we can easily construct a cut $(L, R)$ s.t. $\text{capacity}(L, R) = \text{val}(f)$ by the following way: Let $L$ denote the set of vertices reachable from $s$ and for a vertext $v$ if there is an augmenting path from $s$, then $v \in S$. Since $G^f$ has no augmenting $s-t$ path, we know that $t \not\in S$. And let $R$ be the $R = V \setminus L$, then $t \in R$, and this $(L, R)$ is a valid $s-t$ cut. Then, the capacity of $(L, R)$ is exactly the $f$ of the $G^f$. If not, then thereโs more capacity to flow through $L$ to $R$, and it means $G^f$ has an augmenting path! (๊ท๋ฅ๋ฒ!)
3. $(3) \implies (1)$
Let $(L, R)$ be a cut with $\text{capacity}(L, R) = \text{val}(f)$, and let $fโ$ be a maximum flow in $G$, so $\text{val}(f) \le \text{val}(fโ)$. Since $\text{val}(f) = \text{capaicty}(L, R)$, then $\text{capacity}(L, R) \le \text{val}(fโ)$. However, by the Lemma 1 $\text{val}(fโ) \le \text{capacity}(L, R)$.
$\therefore$ $\text{val}(fโ) = \text{capacity}(L, R) = \text{val}(f)$. This means the $f$ is the maximum flow!!
$\blacksquare$
์ด๋ ๊ฒ Residual Graph $G^f$๋ฅผ ๊ตฌ์ถํ๋ฉฐ Maximum Flow๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก <Ford-Fulkerson Algorithm>๊ณผ <Edmonds-Karp Algorithm>์ด ์๋๋ฐ ์์ <MFMC Theorem>์ $(2) \implies (1)$์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ Residual Graph $G^f$์์ augmenting path๊ฐ ๋์ด์ ์๋ ๊ทธ๋ Maximum Flow๋ฅผ ์ป์ ์ ์๊ฒ ๋๋ค.
๋งบ์๋ง
์ด๋ฒ ํฌ์คํธ์์๋ <Network Flow> ๋ฌธ์ ๋ ๋ฌด์์ธ์ง ๊ทธ๋ฆฌ๊ณ Maximum Flow๋ฅผ ์ฐพ๋ ์ ๊ทผ๋ฒ๊ณผ ๊ทธ ๋ฐฉ๋ฒ์ Optimality๋ฅผ ์ดํด๋ดค๋ค. ์์ง <Network Flow> ๋ฌธ์ ์ ๋ํด์๋ ์์ง ๋ค๋ค์ผ ํ ๋ด์ฉ๋ค์ด ๋ง์ด ๋จ์์๋ค. ๋จ์ ๋ถ๋ถ๋ค์ ์ด์ด์ง๋ Ford-Fulkerson & Edmons-Karp Algorithm ํฌ์คํธ์์ ์ด์ด์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค.
references
- CS Toronto: โNetwork Flows: The Max Flow/Min Cut Theoremโ
- Minimum Cut on a Graph Using a Maximum Flow Algorithm
- Wikipedia
-
smallest $(s, t)$-cut, ๋๋ โmin-cutโ์ด๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํ๋ค. ์ด๊ฒ์ ๊ทธ๋ํ์์ ๊ฐ๋ฅํ ๋ชจ๋ $(s, t)$-cut ์ค capacity๊ฐ ๊ฐ์ฅ ์์ cut์ ์๋ฏธํ๋ค.ย ↩