For a weighted graph G, the maximum cut problem seeks to partition the vertices into sets and so as to maximize the weight (or number) of edges with one vertex in each set. When the graph specifies an electronic circuit, the maximum cut in the graph defines the largest amount of data communication that can take place in the circuit simultaneously. As discussed in catalog Section , maximum cut is an NP-complete version of graph partitioning.
How can we formulate maximum cut for simulated annealing? The solution space consists of all possible vertex partitions; we save a factor of two over all vertex subsets because we can assume that vertex is fixed to be on the left side of the partition. The subset of vertices accompanying it can be represented using a bit vector. The cost of a solution will be the sum of the weights cut in the current configuration. A natural transition mechanism is to select one vertex at random and move it across the partition by simply flipping the corresponding bit in the bit vector. The change in the cost function will be the weight of its old neighbors minus the weight of its new neighbors, so it can be computed in time proportional to the degree of the vertex.
This kind of simple, natural modeling is the right type of heuristic to seek in practice.