Network Transformations and Applications
There are so many variations of what minimum cost flow means. Sometimes an algorithm might state it only works if the costs are all positive. Here are some of the transforms, many are just from section 2.4 of [1].
In the most general formulation of the minimum cost flow problem
- Each vertex has a balance constraint.
- Each edge has lower bound(demand) and upper bound(capacity).
A flow is feasible if it’s within lower bound and upper bound and balance constraint must be satisfied at all vertices.
Min-cost flow problem finds the flow with minimum cost. Min-cost circulation is the min-cost flow problem with all balance . Min-cost transshipment is the min-cost flow problem with no edge capacities. (But there is a lower bound of on all edges).
1 Remove all balance
This shows min-cost flow is equivalent to min-cost circulation. A common way to remove balance is add an new vertex . For each vertex with balance , add edge with lower and upper bound both .
However, this might make the graph no longer have certain structural properties. For example, the graph might no longer be planar.
One way to do this is solve two problems. First compute a spanning tree of the graph. Add parallel edges from to . Find flow only on those parallel edges(so it’s just a tree) that satisfies all the balance constraints. Let this flow be . Make sure the cost of the flow on the added edges are infinity, and consider the residue graph. Now, solve the min-cost circulation on the residual graph and then sum with the flow gives one the desired result. This idea was first used for max flow problem with balance constraints in [2].
2 Remove upper and lower bounds
This shows min-cost flow is equivalent to min-cost transshipment problem. All operations are local, therefore we establish the notation. There is an edge with lower bound , upper bound , cost . and are the balances of and , respectively.
2.1 Remove non-zero lower bound
The idea is we just send the flow of value along the edge! We transform so the new balance for is , new balance for is , and the new upper bound on the edge is . The low The cost doesn’t change.
2.2 Remove upper bounds
Here we assume . If not, first remove the non-zero lower bound. We create a new node with balance . We remove the edge , and split it into and instead. has infinite capacity and cost . has infinite capacity and cost . Finally, let the balance of be .
The idea is instead of sending flow on , now we send on . Because the balance is , we can’t send more than unit of flow. To cover the remaining balance, some flow is sent from to .
3 Applications
Let be a class of graphs. Let be the set of subgraphs of graphs in class . If there is an algorithm that solves min-cost circulation/transshipment problem for , then there is an algorithm that solves min-cost flow problem on . The running time of the algorithm is only the extra time spent on complete the graph to some graph in by adding edges of capacity.
This directly implies min-cost flow on general series-parallel graphs can be solved in time using the algorithm for min-cost circulation on -terminal series-parallel graphs(Note the article solves the min-cost maximum flow problem, one can see it also works for min-cost circulation)[3]. As a corollary, one can solve min-cost flow problem on outerplanar graph in the same running time.