Network Flows, Cuts & Matching

an s-t cut

Imagine you want to stop all water from reaching the drain by cutting some pipes, and you are charged for each pipe by its width. The cheapest set of pipes to cut that fully disconnects pump from drain is the bottleneck of the whole system. An s-t cut is the formal version of choosing where to make that separation, and its capacity is the bill.

Precisely, an s-t cut is a partition of the vertices into two sides, S and T, with the source s in S and the sink t in T. The capacity of the cut is the total capacity of the edges that go from the S side to the T side — only forward-crossing edges count; edges from T back to S are free. (Edges entirely within S or within T do not cross and never count.) For example, cutting just the edges leaving s gives one cut whose capacity is the total out-capacity of s; cutting just the edges into t gives another. The minimum cut is the cheapest such partition.

Cuts matter because every cut is an upper bound on flow: any unit of flow from s to t must cross from S to T at least once, so the value of any flow is at most the capacity of any cut. The max-flow min-cut theorem then says the best flow exactly meets the cheapest cut. This duality is enormously useful: a minimum cut tells you the true bottleneck — which edges, if widened, would actually let more through — and modeling a problem as a min-cut (image segmentation, project selection) is a standard technique. One caution: 'minimum cut' here means minimum capacity, not fewest edges.

In s -> a (3), s -> b (2), a -> t (2), b -> t (3): the cut S = {s}, T = {a, b, t} has capacity 3 + 2 = 5. The cut S = {s, a, b}, T = {t} has capacity 2 + 3 = 5 too. But S = {s, a}, T = {b, t} cuts a->t (2), s->b (2), and a->b (1) forward, capacity 5 — and the true min-cut here is also 5, matching the max flow (this small graph happens to have all minimal cuts equal to 5).

Only S-to-T edges are charged; back edges from T to S are free. The minimum over all such partitions equals the maximum flow.

Capacity counts only edges crossing forward, S to T. Backward edges (T to S) are free, which is easy to forget — and 'minimum' means minimum total capacity, never fewest edges cut.

Also called
cutminimum cutmin-cut割最小割