Algorithm

int kargerMinCut(Graph g) {
  while (g.vertexCount() > 2) {
    Edge e = g.randomEdge();
    g.contract(e);
  }
  return g.remainingEdges();
}
Advertisement

Success probability

P[min cut survives all contractions] ≥ 2 / (n(n-1)). Repeat O(n² log n) times → high probability.

Advertisement

Complexity

Each run: O(V²). Total: O(V⁴ log V) for high probability answer.

Karger-Stein

Recursive variant: contract to √n/√2 vertices, recurse. O(V² log³ V) time, high probability.