Set cover problem

Set cover problem

The set covering problem is a classical question in computer science and complexity theory. As input you are given several sets. They may have some elements in common. You must select a minimum number of these sets so that the sets you have picked contain all the elements that are contained in any of the sets in the input. It was one of Karp's 21 NP-complete problems shown to be NP-complete in 1972.

More formally, given a universe mathcal{U} and a family mathcal{S} of subsets of mathcal{U},a "cover" is a subfamily mathcal{C}subseteqmathcal{S} of sets whose union is mathcal{U}. In the set covering decision problem, the input is a pair (mathcal{U},mathcal{S}) and an integer k; the question is whetherthere is a set covering of size k or less. In the set covering optimization problem, the input is a pair (mathcal{U},mathcal{S}), and the task is to find a set covering which uses the fewest sets.

The decision version of set covering is NP complete, and the optimization version of set cover is NP hard.

Set covering is equivalent to the Hitting set problem. It is easy to see this by observing that an instance of set covering canbe viewed as an arbitrary bipartite graph, with sets represented by vertices on the left, the universe represented by vertices on theright, and edges representing the inclusion of elements in sets. The task is then to find a minimum cardinality subset of left-vertices which covers all of the right-vertices. In the Hitting set problem, the objective is to cover the left-vertices using a minimum subset of the right vertices. Converting from one problem to the other is therefore achieved by interchanging the two sets of vertices.

The set covering problem can be seen as a finite version of the notion of compactness in topology, where the elements of certain infinite families of sets can be covered by choosing only finitely many of them.

Greedy algorithm

The greedy algorithm for set covering chooses sets according to one rule: at each stage, choose the set which contains the largest number of uncovered elements. It can be shown that this algorithm achieves an approximation ratio of H(s), where s is the size of the largest set and H(n) is the n-th harmonic number:

: H(n) = sum_{k=1}^{n} frac{1}{k} le ln{n} +1

There is a standard example on which the greedy algorithm achieves an approximation ratio of log_2(n)/2.The universe consists of n=2^{(k+1)}-2 elements. The set system consists of k pairwise disjoint sets S_1,ldots,S_k with sizes 2,4,8,ldots,2^k respectively, as well as two additional disjoint sets T_0,T_1,each of which contains half of the elements from each S_i. On this input, the greedy algorithm takes the setsS_k,ldots,S_1, in that order, while the optimal solution consists only of T_0 and T_1.An example of such an input for k=3 is pictured on the right.

Inapproximability results show that the greedy algorithm is essentially the best-possible polynomial time approximation algorithm for set cover(see Inapproximability results below), under plausible complexity assumptions.

Low-frequency systems

If each element occurs in at most f sets, then a solution can be found in polynomial time which approximates theoptimum to within a factor of f. The algorithm formulates the set covering instance as an integer program, which isrelaxed to a linear program. The resulting linear program can be solved in polynomial time (e.g. using the Ellipsoid method), and the solutions are rounded to obtain an approximate integral solution.

Inapproximability results

Lund and Yannakakis (1994) showed that set covering cannot be approximated in polynomial time to within a factor of (log_2{n})/2approx{}0.72ln{n}, unless NP has quasi-polynomial time algorithms. Feige (1998)improved this lower bound to (1-o(1))cdotln{n} under the same assumptions, which essentially matchesthe approximation ratio achieved by the greedy algorithm. Raz and Safra established a lower boundof ccdotln{n}, where c is a constant, under the stronger assumption that P ot=NP.A similar result with a higher value of c was recently proved by Alon, Moshkovitz, and Safra.

Related problems

* Vertex cover
* Set packing
* Edge cover
* Hitting set: dual problem of set cover

References

* Noga Alon, Dana Moshkovitz, and Muli Safra. "Algorithmic construction of sets for k-restrictions". ACM Transactions on Algorithms (TALG), v.2 n.2, p.153-177, April 2006.

* Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. "Introduction to Algorithms", Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Section 35.3, The set-covering problem, pp.1033–1038.

* Uriel Feige. "A Threshold of ln n for Approximating Set Cover". Journal of the ACM (JACM), v.45 n.4, p.634 - 652, July 1998.

* Carsten Lund and Mihalis Yannakakis. "On the hardness of approximating minimization problems". Journal of the ACM (JACM), v.41 n.5, p.960-981, Sept. 1994

* Ran Raz and Muli Safra. "A sub-constant error-probability low-degree test, and a sub-constant error-probability PCP characterization of NP". Proceedings of STOC 1997, pp. 475-484, 1997.

External links

* [http://www.nlsde.buaa.edu.cn/~kexu/benchmarks/set-benchmarks.htm Benchmarks with Hidden Optimum Solutions for Set Covering, Set Packing and Winner Determination]


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Vertex cover problem — 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. Definition A… …   Wikipedia

  • Clique cover problem — In computational complexity theory, finding a minimum clique cover is a graph theoretical NP complete problem. The problem was one of Richard Karp s original 21 problems shown NP complete in his 1972 paper Reducibility Among Combinatorial… …   Wikipedia

  • Set packing — is a classical NP complete problem in computational complexity theory and combinatorics, and was one of Karp s 21 NP complete problems. Suppose we have a finite set S and a list of subsets of S. Then, the set packing problem asks if some k… …   Wikipedia

  • Cover (topology) — In mathematics, a cover of a set X is a collection of sets whose union contains X as a subset. Formally, if is an indexed family of sets Uα, then C is a cover of X if Contents 1 Cover in t …   Wikipedia

  • Set theory — This article is about the branch of mathematics. For musical set theory, see Set theory (music). A Venn diagram illustrating the intersection of two sets. Set theory is the branch of mathematics that studies sets, which are collections of objects …   Wikipedia

  • Vertex cover — In the mathematical discipline of graph theory, a vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at least one vertex of the set. The problem of finding a minimum vertex cover is a classical… …   Wikipedia

  • Dominating set — For Dominator in control flow graphs, see Dominator (graph theory). Dominating sets (red vertices). In graph theory, a dominating set for a graph G = (V, E) is a subset D of V such that every vertex not in D is joined to at… …   Wikipedia

  • Maximum coverage problem — The maximum coverage problem is a classical question in computer science and computational complexity theory. It is a problem that is widely taught in approximation algorithms. As input you are given several sets and a number k. The sets may have …   Wikipedia

  • Edge cover — In graph theory, an edge cover of a graph is a set of edges such that every vertex of the graph is incident to at least one edge of the set. In computer science, the minimum edge cover problem is the problem of finding an edge cover of minimum… …   Wikipedia

  • Art gallery problem — The art gallery problem or museum problem is a well studied visibility problem in computational geometry. It originates from a real world problem of guarding an art gallery with the minimum number of guards which together can observe the whole… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”