Documentation of 'org.jgrapht.alg.vertexcover.RecursiveExactVCImpl' Java class
RecursiveExactVCImpl
org.jgrapht.alg.vertexcover

Class RecursiveExactVCImpl<V,E>

  • Type Parameters:
    V - the graph vertex type
    E - the graph edge type
    All Implemented Interfaces:
    MinimumVertexCoverAlgorithm<V,E>, MinimumWeightedVertexCoverAlgorithm<V,E>


    public class RecursiveExactVCImpl<V,E>
    extends java.lang.Object
    implements MinimumWeightedVertexCoverAlgorithm<V,E>
    Finds a minimum vertex cover in a undirected graph. The implementation relies on a recursive algorithm. At each recursive step, the algorithm picks a unvisited vertex v and distinguishes two cases: either v has to be added to the vertex cover or all of its neighbors. In pseudo code, the algorithm (simplified) looks like this:
     
      VC(G):
      if V = ∅ then return ∅
      Choose an arbitrary node v ∈ G
      G1 := (V − {v}, { e ∈ E | v ∈/ e })
      G2 := (V − {v} − N(v), { e ∈ E | e ∩ (N(v) ∪ {v})= ∅ })
      if |{v} ∪ VC(G1)| ≤ |N(v) ∪ VC(G2)| then
        return {v} ∪ VC(G1)
      else
        return N(v) ∪ VC(G2)
     
     
    To speed up the implementation, memoization and a bounding procedure are used. The current implementation solves instances with 150-250 vertices efficiently to optimality. TODO JK: determine runtime complexity and add it to class description. TODO JK: run this class through a performance profiler

DataMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.