Integer Multi-Commodity Flow is NP-Hard

Establishes the NP-hardness of integer multi-commodity flow via reduction from edge-disjoint paths, illustrates the integrality gap on small instances, and classifies the complexity of related flow problems.

Step 1 of 157%

Tutorial

The Integer Multi-Commodity Flow Decision Problem

The multi-commodity flow problem takes as input a directed graph G=(V,E)G=(V,E) with edge capacities ce0c_e \geq 0 and kk commodities. Each commodity ii specifies a source sis_i, sink tit_i, and demand did_i. A feasible solution assigns non-negative flows fi(e)f_i(e) satisfying:

  • Capacity: i=1kfi(e)ce\sum\limits_{i=1}^{k} f_i(e) \leq c_e for every edge ee.
  • Conservation: flow in equals flow out at every node that is not sis_i or tit_i.
  • Demand: did_i units of commodity ii leave sis_i and arrive at tit_i.

The integer version additionally requires fi(e)Z0f_i(e) \in \mathbb{Z}_{\geq 0}. The decision version asks: does an integer feasible solution exist?

Theorem (Even, Itai, Shamir 1976). The decision version of integer multi-commodity flow is NP-complete, even when:

  • k=2k=2 (only two commodities),
  • every edge capacity is 11, and
  • every demand di=1d_i = 1.

In other words, even the simplest non-trivial version of the problem admits no polynomial-time algorithm unless P=NP\mathrm{P}=\mathrm{NP}. This is sharply different from single-commodity flow (k=1k=1), where Ford–Fulkerson terminates in polynomial time and returns an integer-valued optimum whenever capacities are integer.

navigate · Enter open · Esc close · ⌘K/Ctrl K toggle