307. Min-Cost Flow Algorithms

Algorithms that solve the minimum-cost flow problem more efficiently than the generic LP. Given a network with arc capacities and costs , find feasible flow satisfying supply / demand at minimum total cost.

For the problem formulation see Min-cost flow LP.

307.1. Negative-cycle canceling

Idea: start with any feasible flow. If the residual graph has a negative-cost cycle, push flow around it to lower the total cost. Repeat until no negative cycle exists → optimal.

Initialize x with any feasible flow (e.g., zero flow if no demand)
While residual graph has a negative-cost cycle C:
    delta ← min residual capacity along C
    push delta units around C
Return x

307.2. Successive shortest paths (SSP)

Idea: route the flow one unit at a time along the shortest path in the residual network (using current reduced costs).

Initialize x = 0, π = 0 (node potentials), b' = b (residual supply)
While there is unsatisfied supply:
    Find shortest path P from a remaining source to a remaining sink in residual
    delta ← min residual capacity along P
    Push delta along P, update b'
    Update node potentials π to maintain non-negative reduced costs

307.3. Cycle-canceling vs SSP

Cycle-canceling SSP
Starts from feasible flow zero flow
Maintains feasibility optimality
Iteration find negative cycle find shortest path
Stops when no negative cycle supply satisfied
Strongly polynomial? yes (with care) yes

307.4. Other methods

307.5. Practical recommendation

For most instances, use network simplex (in commercial solvers like CPLEX, Gurobi, or open-source libraries). It’s the standard production algorithm for MCNF.

307.6. See also