The basic algorithms for minimum cost flow can be
divided into two classes: those that maintain feasible
solutions and strive toward optimality and those that
maintain infeasible solutions that satisfy optimality
conditions and strive toward feasibility (for details see
[1]). Algorithms from the first class are: the cyclecanceling
algorithm and the out-of-kilter algorithm. The
cycle-canceling algorithm maintains a feasible flow at
every iteration, augments flow along negative cycle in
the residual network and terminates when there is no
more negative cycle in the residual network, which
means (from Theorem 2) that the flow is a minimum
cost flow. The out-of-kilter algorithm maintains a
feasible flow at every iteration and augments flow along
shortest path in order to satisfy the optimality
conditions. Algorithms from the second class are: the
successive shortest path algorithm and primal-dual
algorithm. The successive shortest path algorithm
maintains a pseudoflow that satisfies the optimality
conditions and augments flow along shortest path from
excess nodes to deficit nodes in the residual network in
order to convert the pseudoflow into an optimal flow.
The primal-dual algorithm also maintains a pseudoflow
that satisfies the optimality conditions and solves
maximum flow problems in order to convert the
pseudoflow into an optimal flow.