treats the input as an undirected graph, and tries to find a partition of the vertices into k parts so that each part has roughly the same number of vertices, and so that the number of edges between these parts (known as the edge separator) is minimized.