## Class GreedyVCImpl<V,​E>

• java.lang.Object
• org.jgrapht.alg.vertexcover.GreedyVCImpl<V,​E>
• Type Parameters:
V - the graph vertex type
E - the graph edge type
All Implemented Interfaces:
VertexCoverAlgorithm<V>

public class GreedyVCImpl<V,​E>
extends java.lang.Object
implements VertexCoverAlgorithm<V>
Greedy algorithm to find a vertex cover for a graph. A vertex cover is a set of vertices that touches all the edges in the graph. The graph's vertex set is a trivial cover. However, a minimal vertex set (or at least an approximation for it) is usually desired. Finding a true minimal vertex cover is an NP-Complete problem. For more on the vertex cover problem, see http://mathworld.wolfram.com/VertexCover.html Note: this class supports pseudo-graphs Runtime: $O(|E| \log |V|)$ This class produces often, but not always, better solutions than the 2-approximation algorithms. Nevertheless, there are instances where the solution is significantly worse. In those cases, consider using ClarksonTwoApproxVCImpl.
Author:
Joris Kinable

• ### Nested classes/interfaces inherited from interface org.jgrapht.alg.interfaces.VertexCoverAlgorithm

VertexCoverAlgorithm.VertexCover<V>, VertexCoverAlgorithm.VertexCoverImpl<V>
• ### Constructor Summary

Constructors
Constructor Description
GreedyVCImpl​(Graph<V,​E> graph)
Constructs a new GreedyVCImpl instance where all vertices have uniform weights.
GreedyVCImpl​(Graph<V,​E> graph, java.util.Map<V,​java.lang.Double> vertexWeightMap)
Constructs a new GreedyVCImpl instance
• ### Method Summary

All Methods
Modifier and Type Method Description
VertexCoverAlgorithm.VertexCover<V> getVertexCover()
Finds a greedy solution to the minimum weighted vertex cover problem.
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Constructor Detail

• #### GreedyVCImpl

public GreedyVCImpl​(Graph<V,​E> graph)
Constructs a new GreedyVCImpl instance where all vertices have uniform weights.
Parameters:
graph - input graph
• #### GreedyVCImpl

public GreedyVCImpl​(Graph<V,​E> graph,
java.util.Map<V,​java.lang.Double> vertexWeightMap)
Constructs a new GreedyVCImpl instance
Parameters:
graph - input graph
vertexWeightMap - mapping of vertex weights
• ### Method Detail

• #### getVertexCover

public VertexCoverAlgorithm.VertexCover<V> getVertexCover()
Finds a greedy solution to the minimum weighted vertex cover problem. At each iteration, the algorithm picks the vertex v with the smallest ratio weight(v)/degree(v) and adds it to the cover. Next vertex v and all edges incident to it are removed. The process repeats until all vertices are covered. Runtime: O(|E|*log|V|)
Specified by:
getVertexCover in interface VertexCoverAlgorithm<V>
Returns:
greedy solution