Vertex cover problem
From Wikipedia, the free encyclopedia
|
In computer science, the vertex cover problem or node cover problem is an NP-complete problem and was one of Karp's 21 NP-complete problems. It is often used in complexity theory to prove NP-hardness of more complicated problems.
DefinitionA vertex cover for an undirected graph Failed to parse (Missing texvc executable; please see math/README to configure.): G = (V, E) is a subset Failed to parse (Missing texvc executable; please see math/README to configure.): S of its vertices such that each edge has at least one endpoint in Failed to parse (Missing texvc executable; please see math/README to configure.): S . In other words, for each edge ab in E, one of a or b must be an element of S. Example: In the graph on the right, Failed to parse (Missing texvc executable; please see math/README to configure.): \{1,3,5,6\}
is an example of a vertex cover of size 4. However, it is not a smallest vertex cover since there exist vertex covers of size 3, such as Failed to parse (Missing texvc executable; please see math/README to configure.): \{2,4,5\}
and Failed to parse (Missing texvc executable; please see math/README to configure.): \{1,2,4\}
. The vertex cover problem is the optimization problem of finding a vertex cover of size Failed to parse (Missing texvc executable; please see math/README to configure.): k in a given graph.
.
such that there is a vertex cover Failed to parse (Missing texvc executable; please see math/README to configure.): S for Failed to parse (Missing texvc executable; please see math/README to configure.): G of size Failed to parse (Missing texvc executable; please see math/README to configure.): k . Equivalently, the problem can be stated as a decision problem:
and positive integer Failed to parse (Missing texvc executable; please see math/README to configure.): k .
for Failed to parse (Missing texvc executable; please see math/README to configure.): G of size at most Failed to parse (Missing texvc executable; please see math/README to configure.): k ? Vertex cover is closely related to the Independent Set problem. A set of vertices Failed to parse (Missing texvc executable; please see math/README to configure.): S is a vertex cover if and only if its complement Failed to parse (Missing texvc executable; please see math/README to configure.): \bar S = V \setminus S is an independent set. It follows that a graph with Failed to parse (Missing texvc executable; please see math/README to configure.): n vertices has a vertex cover of size Failed to parse (Missing texvc executable; please see math/README to configure.): k if and only if the graph has an independent set of size Failed to parse (Missing texvc executable; please see math/README to configure.): n-k . In this sense, the two problems are dual to each other. TractabilityThe decision variant of the vertex cover problem is NP-complete, which means it is unlikely that there is an efficient algorithm to solve it exactly. NP-completeness can be proven by reduction from 3-satisfiability (see image on the right) or, as Karp did, by reduction from the clique problem. Vertex cover remains NP-complete even in cubic graphs[1] and even in planar graphs of degree at most 3[2]. For bipartite graphs, the equivalence between vertex cover and maximum matching described by König's theorem allows the bipartite vertex cover problem to be solved in polynomial time. Fixed-Parameter TractabilityDespite the fact that vertex cover is NP-complete, a brute force algorithm can solve the problem in time Failed to parse (Missing texvc executable; please see math/README to configure.): 2^{\mathcal O(k)} n^{\mathcal O(1)}. Vertex cover is therefore fixed-parameter tractable, and if we are only interested in small Failed to parse (Missing texvc executable; please see math/README to configure.): k , we can solve the problem in polynomial time. The strategy of the brute force algorithm is to choose some vertex and recursively branch, with two cases at each step: place either the current vertex or all its neighbors into the vertex cover. Under reasonable complexity-theoretic assumptions, this running time cannot be improved to Failed to parse (Missing texvc executable; please see math/README to configure.): 2^{o(k)} n^{\mathcal O(1)} . For planar graphs, however, a vertex cover of size Failed to parse (Missing texvc executable; please see math/README to configure.): k
can be found in time Failed to parse (Missing texvc executable; please see math/README to configure.): 2^{\mathcal O(\sqrt{k})} n^2
, i.e., the problem is subexponential fixed-parameter tractable. This algorithm is again optimal, in the sense that, under the same complexity-theoretic assumptions, no algorithm can solve vertex cover on planar graphs in time Failed to parse (Missing texvc executable; please see math/README to configure.): 2^{o(\sqrt{k})} n^{\mathcal O(1)} .[3] ApproximabilityOne can find a factor-2 approximation by repeatedly taking both endpoints of an edge into the vertex cover, then removing them from the graph. No better constant-factor approximation is known; the problem is APX-complete, i.e., it cannot be approximated arbitrarily well. More precisely, minimum vertex cover is known to be approximable within
[4] but cannot be approximated within a factor of 1.3606 for any sufficiently large vertex degree unless P=NP.[5] See also
References
External links
|


