Karger's algorithm

From Wikipedia, the free encyclopedia

In computer science and graph theory, the Karger's algorithm is a Monte Carlo method to compute the minimum cut of a connected graph.

Contents

[edit] Algorithm

The idea of the algorithm is based on the concept of contraction of an edge e in a graph. Informally speaking, the contraction of an edge makes the two nodes joined by e overlap, reducing the total number of nodes of the graph by one. The algorithm proceeds iterating contractions until only two nodes are left in the graph. With high probability, the algorithm will return a minimal cut by returning the set of edges joining the two remaining nodes.

[edit] Contraction

Informally speaking, this operation takes an edge e with endpoints x and y and contracts it into a new node ve which becomes adjacent to all former neighbors of x and y. It is possible to formalize this concept in mathematical terms.

Given a graph G = \left ( V, E \right ) and e = \lbrace x, y \rbrace \in E, the contraction of G respect to e (written G/e = \left ( V', E'\right )) is a multigraph where:

V' = \left( V \setminus \lbrace x, y \rbrace \right) \cup \lbrace v_e \rbrace

and:

E' = \lbrace \lbrace v, w \rbrace \in E \mid \lbrace v,w \rbrace \cap \lbrace x,y \rbrace = \emptyset \rbrace \cup \lbrace \lbrace v_e,w \rbrace \mid 
\lbrace x,w \rbrace \in E \setminus \lbrace e \rbrace or  \lbrace y,w \rbrace \in E \setminus \lbrace e \rbrace  \rbrace

It is possible to prove that this operation doesn't reduce the cardinality of the minimum cut, but that it might increase it.

[edit] Pseudocode

The algorithm can be implemented using two functions:

 function Karger(G, K)
 min := + \infty
 for i = 1 to K do
   t := Full_contraction(G)
   if t < min then
     min := t
 return min
 function Full_contraction(G)
 for i := 1 to |V| - 2 do
   e := Random(\varepsilon)
   G' = ( V', \varepsilon') := G / e
   V := V'
   \varepsilon := \varepsilon'
 return |\varepsilon|

The function Full_contraction implements the contraction of the edges following the given definition. The iteration lasts until only two nodes are left in the graph. With a certain probability, the set of edges left are the minimum cut. It is not sure anyway that this algorithm returns a cut which is minimum, therefore K execution of Full_contraction is performed by the Karger function, where K has to be passed as a parameter. Computing the minimum of the K executions reduces the probability of having a wrong minimum cut returned.

[edit] References

  1. A. A. Tsay, W. S. Lovejoy, David R. Karger, Random Sampling in Cut, Flow, and Network Design Problems, Mathematics of Operations Research, 24(2):383–413, 1999.