Max-flow min-cut theorem
目录- Describe the definitions of Max-flow and Min-cut.
- Prove the Max-flow min-cur theorem.
Since I can't find a clear article about the Max-flow/Min-cut Theorem in the cn.network for me.
So, I decided to write a blog about this topic.
The definitions introduce
The theorem relates two different quantities maximum flow through a network and the minimum capacity of a cut in the network, that is, the minimum capacity is achieved by the flow.
To state the theorem, each of the quantities must first be defined.
Now, we first define the graph. Let \(N = (V, E)\) be a directed graph, where \(V\) denotes the set of vertices and \(E\) is the set of edges. Let \(s \in V\) and \(t \in V\) be the source and sink node of \(N\), respectively.
The capacity of an edge is a mapping \(c: E \rightarrow \mathrm{R}^{+}\) denoted by \(c_{uv}\) or \(c(u, v)\) where \(u, v \in V\). It represents the maximum amount of flow that can pass through an edge.
What are flows?
A flow is a mapping \(f: E \rightarrow \mathrm{R}^{+}\) denoted by \(f_{uv}\) or \(f(u, v)\), subject to the following two constraints:
- Capacity Constraint: For every edge \((u, v) \in E, f_{uv} \le c_{uv}\).
- Conservation of Flows: For each vertex \(v\) apart from \(s\) and \(t\), the following equality holds: \(\sum_{\{u:(u,v) \in E\}}f_{uv} = \sum_{\{w:(v,w)\in E \}} f_{vw}\)
The capacity constraint says that the volume flowing through each edge per unit time is less than or equal to the maximum capacity of the edge.
The conservation constraint says that the amount that flows into each vertex is equal to the amount flowing out of each vertex, apart from the source and sink vertices.
The value of flow is defined as:
\[|f| = \sum _{v:(s,v)\in E} f_{sv} = \sum _{v:(v,t) \in E} f_{vt} \]where \(s\) is the source vertex and \(t\) is the sink vertex.
The maximum flow problem asks for the largest flow on a given network.
What are cuts?
There is another different aspect of the max-flow min-cur theorem: the cuts.
An s-t cut \(C=(S, T)\) is a partition of \(V\) such that \(s \in S, t \in T\). That is, s-t cut is a division of the \(V\) into two parts, with the source in one part and the sink in another. The cut-set \(X_{C}\) of a cut \(C\) is the set of edges that connect the different parts:
\[X_{C} = \{(u, v) \in E: u \in S, v \in T\} = (S\times T) \cap E \]Thus, if the cut-set \(X_{C}\) is removed, then no positive flow is possible, because there is no path in the resulting graph from the source to the sink.
The capacity of an s-t cut is the sum of the capacities of the edges in its cut-set:
\[c(S, T) = \sum _{(u, v) \in X_{C}} c_{uv} \]There are typically many cuts in a network, but cuts with the smallest weights are often more difficult to find.
The minimum cut problem asks for the s-t cut with minimal \(c(S, T)\).
What's the main theorem?
The main theorem links maximum flow through a network with the minimum cut of the network.
The maximum value of an s-t flow is equal to the minimum capacity over all s-t cuts.
Proof the theorem.
Let $G = (V, E) $ be a network (directed graph) with \(s\) and \(t\) being the source and the sink vertex of \(G\) respectively.
Consider the max-flow \(f\) calculated by Ford-Fulkerson. In the residual graph \(G_f\) obtained for \(G\) (after the final flow assignment), define two subsets of vertices as follows:
- \(A\): the set of vertices reachable from \(s\) in \(G_f\).
- \(A^{C}\): the set of remaining vertices i.e. \(V - A\)
Claim. value(\(f\)) = \(c(A, A^{C})\)(max-flow is equal to the min-cut), where the capacity of an s-t cut is defined by:
\[c(S, T) = \sum _{(u, v) \in S \times T} c_{uv} \]First of all, we know, value(\(f\)) = \(f_{out}(A) - f_{in}(A)\) for any subset of \(V\), A. Let \(ES = (A\times A^{C} \cap E) \cup (A^{C}\times A \cap E)\). Therefore, if value(\(f\)) = \(c(A, A^{C})\), we must hold:
- All outgoing edges from set \((A\times A^{C}) \cap E\) must be fully saturated.
- All incoming edges from set \((A^{C} \times A) \cap E\) must have zero flow.
To prove the above claim we consider the following two cases:
- In \(G\), there exists an outgoing edge \((x, y), x\in A, y\in A^{C}\) such that it's not saturated, i.e. \(f(x, y) < c_{xy}\). This implies that there exists a forward edge from \(x\) to \(y\) in \(G_{f}\) (The residual Graph, therefore there exists a path from \(s\) to \(y\) in \(G_{f}\), which is a contradiction. Hence, any outgoing edge\((x,y)\) is fully saturated.
- In \(G\), there exists an incoming edge \((y,x), x\in A, y\in A^{C}\) such that it carries some non-zero flow, i.e. \(f(y, x)>0\). This implies, that there exists a backward edge in the residual graph from \(x\) to \(y\). rev edge). Therefore there also exists a path from \(s\) to \(y\) through the rev edge in \(G_{f}\), which is again a contradiction. Hence, any incoming edge \((y,x )\) must have zero flow.
This \(\mathrm{value}(f) \le c(S, T)\) inequality holds for any cut of the graph \(G\). So, the above-described cut is also the min-cut which obtains the max-flow.
How to get the min-cut?
By the above proof, the minimum cut is therefore very simple to obtain.
The set of all points that can be traversed from the source point \(s\) is \(S\) and the rest of the points not included in the set are \(T\), which form the minimum cut.
本来是打算自己提炼一篇的,英文水平太次只能基本复刻一个出来。
但是关于最小流的认知已经很清晰了,国内关于最小流的讲解都不是很清晰。
关键在于:残余网络上从\(s\)出发所有可达的点为一个集合\(S\),其他的为另外的集合\(T\)。
那么对于第一种边集:\(S\times T \cap E\),设这些边上的流量\(f_1\),\(f_1\)为该割代表的值。
那么对于第二种边集:$T\times S\cap E \(,设这些边上的流量\)f_2\(,\)f_1 - f_2$为图的流量。
搞清楚这几个概念就懂了。