1. A method for partitioning a graph of nodes into a plurality of clusters, the method comprising: performing an edge removal iteration on the graph, wherein the edge removal iteration comprises, for each node of a plurality of nodes selected from the graph of nodes: determining, for each neighbor of said each node, a degree of overlap between neighbors of said each node and neighbors of said each neighbor of said each node; and removing one or more edges from the graph based on the degree of overlap between said neighbors of said each node and said neighbors of said each neighbor of each said node; after the edge removal iteration, determining whether any cluster of the graph is sufficiently partitioned; performing one or more additional edge removal iterations on the graph, wherein nodes that belong to clusters of the graph that are sufficiently partitioned are excluded from a plurality of remaining nodes, wherein the one or more additional edge removal iterations comprise, for each remaining node of the plurality of remaining nodes: determining, for each neighbor of said each remaining node, a degree of overlap between neighbors of said each remaining node and neighbors of said each neighbor of said each remaining node; and removing one or more additional edges from the graph based on the degree of overlap between said neighbors of said each remaining node and said neighbors of said each neighbor of said each remaining node; wherein the method is performed by one or more computing devices.