Local Search for Graph Partitioning
In designing a local search algorithm, it will be a big convenience to focus on the special
case m = 1/2, in which A and B are forced to contain exactly half the vertices. The apparent
loss of generality is purely cosmetic, as GRAPH PARTITIONING reduces to this particular
case.
We need to decide upon a neighborhood structure for our problem, and there is one
obvious way to do this. Let (A, B), with |A| = |B|, be a candidate solution; we will
define its neighbors to be all solutions obtainable by swapping one pair of vertices
across the cut, that is, all solutions of the form (A - {a} + {b}, B - {b} + {a}) where
a is in A and b is in B. Here's an example of a local move: