Graph Partitioning

The problem of graph partitioning arises in a diversity of applications, from circuit layout to program analysis to image segmentation. The Graph Partitioning task is specified by:

Input: An undirected graph G = (V, E) with nonnegative edge weights; a real number m between 0 and 1/2.

Output: A partition of the vertices into two groups A and B, each of size at least m * |V|.

Goal: Minimize the capacity of the cut (A, B).

The figure below shows an example in which the graph has 16 nodes, all edge weights are 0 or 1, and the optimal solution has cost 0.

An instance of the Graph Partitioning task, with the optimal partition for m = 1/2. Vertices on one side of the cut are shaded.