We consider the following clustering problem: we have a complete graph on n vertices (items), where each edge (u, v) is labeled either + or – depending on whether u and v have been deemed to be similar or different. The goal is to produce a partition of the vertices (a clustering) that agrees as much as possible with the edge labels. That is, we want a clustering that maximizes the number of + edges within clusters, plus the number of – edges between clusters (equivalently, minimizes the number of disagreements: the number of – edges inside clusters plus the number of + edges between clusters). This formulation is motivated from a document clustering problem in which one has a pairwise similarity function f learned from past data, and the g...