java.lang.Object
org.jgrapht.alg.vertexcover.GreedyVCImpl<V,E>
- Type Parameters:
V
- the graph vertex typeE
- the graph edge type
- All Implemented Interfaces:
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 Class Summary
Nested classes/interfaces inherited from interface org.jgrapht.alg.interfaces.VertexCoverAlgorithm
VertexCoverAlgorithm.VertexCover<V>, VertexCoverAlgorithm.VertexCoverImpl<V>
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionFinds a greedy solution to the minimum weighted vertex cover problem.
-
Constructor Details
-
GreedyVCImpl
Constructs a new GreedyVCImpl instance where all vertices have uniform weights.- Parameters:
graph
- input graph
-
GreedyVCImpl
Constructs a new GreedyVCImpl instance- Parameters:
graph
- input graphvertexWeightMap
- mapping of vertex weights
-
-
Method Details
-
getVertexCover
Finds a greedy solution to the minimum weighted vertex cover problem. At each iteration, the algorithm picks the vertex v with the smallest ratioweight(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 interfaceVertexCoverAlgorithm<V>
- Returns:
- greedy solution
-