Vertex Cover Problem

In the mathematical discipline of graph theory, a vertex cover (sometimes node cover) of a graph is a set of vertices that includes at least one endpoint of every edge of the graph. The minimum vertex cover problem is the optimization problem of finding a smallest vertex cover in a given graph. In short, it is to find a minimum set of vertices to track all edges.

  • Input: Set V, Set E{{u,v}|u,vV}
  • Output: Set SV
  • Constraint: For all {u,v}E, either uS or vS
  • Objective Function: Minimize |S|

Suppose V={1,...,n}, we can express the output as a vector x=(x1,...,xn), where xi=1 if iS, otherwise, xi=0

We introduce the Incidence Matrix A for this problem. Matrix A has the shape of |E|×|V|, each row represents a relationship (edge). In each row, two elements are 1, indicating that these two nodes are linked. Therefore, the above problem can be expressed as follows.

  • Input:
    • Matrix A
    • vector b=(1,...,1)
    • vector c=(1,...,1)
    • Assumption: At each row of A, two elements are 1, others are 0. All elements of b and c are 1.
  • Output: vector x=(x1,...,xn), where xi is either 0 or 1.
  • Constraint: Axb
  • Objective Function: Minimize cx

Rounding

Fractional Vertex Cover

  • Input:
    • Matrix A
    • vector b=(1,...,1)
    • vector c=(1,...,1)
    • Assumption: At each row of A, two elements are 1, others are 0. All elements of b and c are 1.
  • Output: vector x=(x1,...,xn), where xi[0,1].
  • Constraint: Axb
  • Objective Function: Minimize cx

Algorithm

The algorithm is based the fractional vertex cover problem we just defined.

  1. Use linear programming to solve fractional vertex cover, and get output vector x=(x1,...,xn), where xi[0,1]
  2. For all 0in, let xi=1 when xi0.5, otherwise, xi=0. Let x=(x1,...,xn).
  3. Return x as the answer of the vertex cover problem.

Theorem

  1. x is an answer for the vertex cover problem. It satisfies the constraint.
  2. It is a 2-approximation algorithm. For any particular input, SOL2 OPT.

Proof

Here we prove that the algorithm is a 2-approximation algorithm, i.e., SOL2 OPT for any input.

Let x=(x1,...,xn) be the optimal solution for the fractional vertex cover problem. It is the vector in [0,1]n that minimizes cx when Axb. On the other hand, let x be the vector in {0,1}n that minimizes cx when Axb. Both of the vectors minimize the objective function with the same constraint, but x is selected from a larger set. x has more chances to minimize the objective function, so the objective value of x is better (thus smaller) than that of x, i.e., cxcx.

Now, consider the value of xi. By the rounding at the step 2 of the algorithm, we have xi2xi. Then

SOL=cx=ixi2ixi=2cx2cx=2 OPT