Covering problems
In combinatorics and computer science, covering problems are computational problems that ask whether a certain combinatorial structure 'covers' another, or how large the structure has to be to do that. Covering problems are minimization problems and usually linear programs, whose dual problems are called packing problems.
The most prominent examples of covering problems are the set cover problem, which is equivalent to the hitting set problem, and its special cases, the vertex cover problem and the edge cover problem.
Covering/packing-problem pairs | ||||||||
---|---|---|---|---|---|---|---|---|
|
||||||||
General LP formulation
In the context of linear programming, one can think of any linear program as a covering problem if the coefficients in the constraint matrix, the objective function, and right-hand side are nonnegative.[1] More precisely, consider the following general integer linear program:
minimize | [math]\displaystyle{ \sum_{i=1}^n c_i x_i }[/math] |
subject to | [math]\displaystyle{ \sum_{i=1}^n a_{ij} x_i \geq b_j \text{ for }j=1,\dots,m }[/math] |
[math]\displaystyle{ x_i \geq 0\text{ for }i=1,\dots,n }[/math]. |
Such an integer linear program is called covering problem if [math]\displaystyle{ a_{ij}, b_j, c_i \geq 0 }[/math] for all [math]\displaystyle{ i=1,\dots,n }[/math] and [math]\displaystyle{ j=1,\dots,m }[/math].
Intuition: Assume having [math]\displaystyle{ n }[/math] types of object and each object of type [math]\displaystyle{ i }[/math] has an associated cost of [math]\displaystyle{ c_i }[/math]. The number [math]\displaystyle{ x_i }[/math] indicates how many objects of type [math]\displaystyle{ i }[/math] we buy. If the constraints [math]\displaystyle{ A\mathbf{x}\geq \mathbf{b} }[/math] are satisfied, it is said that [math]\displaystyle{ \mathbf{x} }[/math] is a covering (the structures that are covered depend on the combinatorial context). Finally, an optimal solution to the above integer linear program is a covering of minimal cost.
Other uses
For Petri nets, for example, the covering problem is defined as the question if for a given marking, there exists a run of the net, such that some larger (or equal) marking can be reached. Larger means here that all components are at least as large as the ones of the given marking and at least one is properly larger.
See also
- The biclique edge cover problem asks for covering all edges of a given graph with (as few as possible) complete bipartite subgraphs.
- Disk covering problem, the problem of covering a unit circle with smaller circles
- Polygon covering, the problem of covering a complex polygon with simpler polygons such as squares or rectangles.
- The non-rectangle problem. The problem of covering a rectangular area without sub-rectangles. [2]
Notes
- ↑ (Vazirani 2001)
- ↑ Martinez, Rebecca (1 March 2014). "March Puzzle". Triad Mensa 8 (3): 2. http://www.triad.us.mensa.org/pdfs2010/Mar14TM.pdf. Retrieved 20 April 2017.
References
- Vazirani, Vijay V. (2001). Approximation Algorithms. Springer-Verlag. ISBN 3-540-65367-8.
External links
- Erich's Packing Center contains some illustrations of geometric covering problems.