Class StoerWagnerMinimumCut<V,E>

java.lang.Object
org.jgrapht.alg.StoerWagnerMinimumCut<V,E>
Type Parameters:
V - the graph vertex type
E - the graph edge type

public class StoerWagnerMinimumCut<V,E> extends Object
Implements the Stoer and Wagner minimum cut algorithm. Deterministically computes the minimum cut in $O(|V||E| + |V| \log |V|)$ time. This implementation uses Java's PriorityQueue and requires $O(|V||E| \log |E|)$ time. M. Stoer and F. Wagner, "A Simple Min-Cut Algorithm", Journal of the ACM, volume 44, number 4. pp 585-591, 1997.
Author:
Robby McKilliam, Ernst de Ridder
  • Field Details

    • bestCutWeight

      protected double bestCutWeight
    • bestCut

      protected Set<V> bestCut
  • Constructor Details

    • StoerWagnerMinimumCut

      public StoerWagnerMinimumCut(Graph<V,E> graph)
      Will compute the minimum cut in graph.
      Parameters:
      graph - graph over which to run algorithm
      Throws:
      IllegalArgumentException - if a negative weight edge is found
      IllegalArgumentException - if graph has less than 2 vertices
  • Method Details

    • minimumCutPhase

      protected void minimumCutPhase(Set<V> a)
      Implements the MinimumCutPhase function of Stoer and Wagner.
      Parameters:
      a - the vertex
    • minCutWeight

      public double minCutWeight()
      Return the weight of the minimum cut
      Returns:
      the weight of the minimum cut
    • minCut

      public Set<V> minCut()
      Return a set of vertices on one side of the cut
      Returns:
      a set of vertices on one side of the cut
    • mergeVertices

      protected StoerWagnerMinimumCut<V,E>.VertexAndWeight mergeVertices(Set<V> s, Set<V> t)
      Merges vertex $t$ into vertex $s$, summing the weights as required. Returns the merged vertex and the sum of its weights
      Parameters:
      s - the first vertex
      t - the second vertex
      Returns:
      the merged vertex and its weight
    • vertexWeight

      public double vertexWeight(Set<V> v)
      Compute the sum of the weights entering a vertex
      Parameters:
      v - the vertex
      Returns:
      the sum of the weights entering a vertex