CSCE 411 Lecture 25

From Notes
Jump to navigation Jump to search
Lecture Handout

« previous | Friday, October 26, 2012 | next »


Minimum Cut Algorithm

Contract edges at random until two nodes remain.

def contract G
  until g.vertices.size = 2
    e = g.edges.sample
    g /= e
  end
  g.edges.size
end

Count the number of edges remaining in the graph.

Minimum cut has fewest edges between two partitions. The chances that we'll contract one of these edges (thus getting rid of it) are very low: .

Analysis

Therefore


Let be a loop-free connected multigraph with vertices.

The program terminates after performing contractions.

Suppose that is a particular minimum cut of .

Let denote the event that the algorithm selects an edge in the th iteration that does not cross the cut . Therefore, the probability that no edge crossing the cut is ever picked during an execution of the algorithm is

Suppose that the size of the minimum cut is . This means that the degree of each vertex is at least ; hence, there exists at least edges.

The probability to select an edge crossing in the first step is at most .

Thus

At the beginning of the th iteration, there are remaining vertices. The minimum cut is tstill at least , hence the graph at this stage has at least edges.

Assuming none of the edges crossing were picked in an earlier step, the probability to select an edge crossing (unlucky) is at most .

It follows that

Combining what we know,

Repeat the algorithm slightly more than times, say times, the algorithm will more than likely return the correct result.