Exam Format & Expectations
Flow Theory questions typically involve:
- Max-flow min-cut theorem - Find minimum cut given maximum flow
- Flow conservation - Verify or compute flows at vertices
- Reduction to matching - Convert problems to bipartite matching
- Prove flow properties - Value, feasibility, optimality
Past Exam Example: Finding Minimum Cut (2024)
Problem:
Given a flow network with maximum flow value 15. The final residual network Gf* is:
Find a minimum cut (S, T) and verify its capacity equals 15.
Step 1: Find reachable vertices from s in Gf*:
• From s: Can reach b (residual capacity 3)
• From b: Can reach d (residual capacity 4)
• Cannot reach a (no edge from s)
• Cannot reach c (no edge from b)
• Cannot reach t (no path)
Step 2: Define the cut:
S = { s, b, d } (reachable from s)
T = { a, c, t } (not reachable)
Step 3: Find edges crossing the cut (S → T):
• (s, a) with capacity c(s,a)
• (b, c) with capacity c(b,c)
• (d, t) with capacity c(d,t)
Step 4: Verify these edges are saturated:
Since residual capacity is 0 for edges crossing S → T,
they must be saturated in the maximum flow.
Step 5: Calculate cut capacity:
c(S,T) = c(s,a) + c(b,c) + c(d,t) = 15By max-flow min-cut theorem: max flow = min cut = 15 ✓
Example: Reduction to Bipartite Matching
Problem: Task Assignment
n workers and m tasks. Worker i can perform task j if (i,j) ∈ E. Each worker can do at most k tasks. Each task needs exactly one worker. Maximize number of completed tasks.
Show how to reduce this to a max-flow problem.
Construction:
- Create vertices:
- • Source s and sink t
- • Vertex wi for each worker i
- • Vertex tj for each task j
- Add edges:
- • (s, wi) with capacity k for each worker i
- • (wi, tj) with capacity 1 if (i,j) ∈ E
- • (tj, t) with capacity 1 for each task j
- Correspondence:
Maximum flow = maximum number of tasks assigned
Why it works:
- • Edge (s, wi) capacity k limits worker i to k tasks
- • Edge (tj, t) capacity 1 ensures task j assigned once
- • Unit capacities on matching edges ensure integral flow
Key Theorems to Remember
Max-Flow Min-Cut Theorem
max { |f| : f is a flow } = min { c(S,T) : (S,T) is a cut }The maximum flow value equals the capacity of the minimum cut.
Flow Conservation
For all v ≠ s,t:
Σu f(u,v) = Σw f(v,w)Inflow equals outflow at every internal vertex.
Integrality Theorem
If all capacities are integers, then there exists an integral maximum flow. Ford-Fulkerson will find it.
Common Reduction Patterns
Vertex Capacities
To model vertex capacity c(v):
- 1. Split v into vin and vout
- 2. Add edge (vin, vout) with capacity c(v)
- 3. Redirect all incoming edges to vin
- 4. Redirect all outgoing edges from vout
Multiple Sources/Sinks
For multiple sources s1,...,sk:
- 1. Add super-source s
- 2. Add edges (s, si) with capacity ∞
- 3. Similarly for multiple sinks