org.jgrapht.alg.vertexcover

## Class GreedyVCImpl<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 GreedyVCImpl<V,E>
extends Object
implements MinimumWeightedVertexCoverAlgorithm<V,E>```
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`.
Since:
Nov 6, 2003
Author:
Joris Kinable

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

`MinimumVertexCoverAlgorithm.VertexCover<V>, MinimumVertexCoverAlgorithm.VertexCoverImpl<V>`
• ### Constructor Summary

Constructors
Constructor and Description
`GreedyVCImpl()`
• ### Method Summary

All Methods
Modifier and Type Method and Description
`MinimumVertexCoverAlgorithm.VertexCover<V>` ```getVertexCover(UndirectedGraph<V,E> graph, Map<V,Double> vertexWeightMap)```
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`
• ### Methods inherited from interface org.jgrapht.alg.interfaces.MinimumWeightedVertexCoverAlgorithm

`getVertexCover`
• ### Constructor Detail

• #### GreedyVCImpl

`public GreedyVCImpl()`
• ### Method Detail

• #### getVertexCover

```public MinimumVertexCoverAlgorithm.VertexCover<V> getVertexCover(UndirectedGraph<V,E> graph,
Map<V,Double> vertexWeightMap)```
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 `MinimumWeightedVertexCoverAlgorithm<V,E>`
Parameters:
`graph` - input graph
`vertexWeightMap` - mapping of vertex weights
Returns:
greedy solution