Min cost flow on unit capacity networks and convex cost K-flow are as easy as the assignment problem with All-Min-Cuts algorithm

Dorit S. Hochbaum

We explore here surprising links between the time-cost-tradeoff problem and the minimum cost flow problem that lead to faster, strongly polynomial, algorithms for both problems. One of the main results is a new algorithm for the unit capacity min cost flow that culminates decades of efforts to match the complexity of the fastest strongly polynomial algorithm known for the assignment problem. The time cost tradeoff (TCT) problem in project management is to expedite the durations of activities, subject to precedence constraints, in order to achieve a target project completion time at minimum expediting costs, or, to maximize the net benefit from a reward associated with project completion time reduction. We devise here the all-min-cuts procedure, which for a given maximum flow, is capable of generating all minimum cuts of equal value very efficiently in average $O(m+n \log n)$ time. The all-min-cuts procedure implies faster algorithms for TCT problems: For a project network on $n$ nodes and $m$ arcs, with $n'$ arcs of finite uniform expediting costs, the run time is $O((n+n')(m+n\log n))$; for projects with reward of $O(K)$ per unit reduction in the project completion time the run time is $O((n+K)(m+n\log n))$. Using the primal-dual relationship between TCT and the minimum cost flow problem (MCF) we generate faster strongly polynomial algorithms for various cases of minimum cost flow: For the unit capacity MCF the complexity of our algorithm is $O(n(m+n\log n))$, which is faster than any other strongly polynomial known to date; For a minimum convex (or linear) cost $K$-flow problem our algorithm runs in $O((n+K)(m+n\log n))$. This complexity of the algorithm for any min cost $O(n)$-flow matches the best known complexity for the assignment problem, $O(n(m+n\log n))$, yet with a significantly different approach.

Knowledge Graph

arrow_drop_up

Comments

Sign up or login to leave a comment