Set covering problem

From Cornell University Computational Optimization Open Textbook - Optimization Wiki
Jump to navigation Jump to search

Authors: Sherry Liang, Khalid Alanazi, Kumail Al Hamoud

The set covering problem is a significant NP-hard problem in combinatorial optimization. In the set covering problem, two sets are given: a set S of elements and a set A of subsets of the set S. Each subset in A is associated with a predetermined cost, and the union of all the subsets covers the set S. This combinatorial problem then concerns finding the optimal number of subsets whose union covers the universal set while minimizing the total cost.1



The mathematical formulation of the set covering problem is define as follows. We define U as the universe of elements such that U = {u1, ….. um} and S = {s1, ….sn} as a collection of subsets

such that si U and their union cover U (i.e. si = U ). Addionally, each set si must cover at least one element of U and has associated cost c that is larger than zero (i.e. ci > 0). The objective

is to find the minimum subcollection of sets X S that covers all the elements in U and has the minimum cost.

An integer linear program (ILP) model can be formulated for the set covering problem as follows:

Decision variables

Objective function




The applications of the set covering problem span a wide range of applications, but its usefulness is evident in industrial and governmental planning. Variations of the set covering problem that are of practical significance include the following.

The optimal covering location problem
This set covering problems is concerned with maximizing the population coverage of some public facility.2 Consider the problem of placing hospitals at different cities around some state.
The cell tower coverage problem
The airline crew scheduling problem



  1. Grossman, T., & Wool, A. (1997). Computational experience with approximation algorithms for the set covering problem. European Journal of Operational Research, 101(1), 81-92. doi:10.1016/s0377-2217(96)00161-0