Summary: 96 communications of the acm | october 2008 | vol. 51 | no. 10
Geometry, Flows, and
By Sanjeev Arora, Satish Rao, and Umesh Vazirani
"Graph partitioning" refers to a family of computational
problems in which the vertices of a graph have to be par-
titioned into two (or more) large pieces while minimizing
the number of the edges that cross the cut (see Figure 1).
The ability to do so is a useful primitive in "divide and con-
quer" algorithms for a variety of tasks such as laying out
very large circuits on laying out very large circuits on silicon
chips and distributing computation among processors. In-
creasingly, it is also used in applications of clustering rang-
ing from computer vision, to data analysis, to learning.
These include finding groups of similar objects (custom-
ers, products, cells, words, and documents) in large data
sets, and image segmentation, which is the first step in im-