Algorithm Design
Algorithm Design
Algorithm Design
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
636<br />
Chapter !! Approximation <strong>Algorithm</strong>s<br />
(11.23) Let S* denote a vertex cover o] ~ minimum tveight. Then tvLp < w(S*).<br />
Proof. Vertex covets of G correspond to integer solutions of (VC.IP)~ so the<br />
minimum of nfin(tvtx : -i >_ x >_ O, Ax >_ !) over all integer x vectors is exactly<br />
the minimum-weight vertex cover. To get the minimum of the linear program<br />
(VC.LP), we allow x to take arbitrary real-number values--that is, we minimize<br />
over many more choices of x--and so the minimum of (VC.LP) is no larger<br />
than that of (VC.IP). []<br />
Note that (11.23) is one of the crucial ingredients we need for an approximation<br />
algorithm: a good lower bound on the optimum, in the form of the<br />
efficiently computable quantity tvLp.<br />
However, tvLp Can definitely be smaller than tv(S*). For example, if the<br />
graph G is a triangle and all weights are 1, then the minimum vertex cover has<br />
a weight of 2. But, in a linear programming solution, we can set xi = ½ for 3 AS all<br />
three vertices, and so get a linear programming solution of weight only ~.<br />
a more general example, consider a graph on n nodes in which each pair of<br />
nodes is connected by an edge. Again, all weights are 1. Then the minimum<br />
vertex cover has weight n - 1, but we can find a linear programming solution<br />
of value n/2 by setting xi = } for all vertices i.<br />
So the question-is: How can solving this linear program help us actually<br />
find a near-optimal vertex cover? The idea is to work with the values x~ and<br />
to infer a vertex cover S from them. It is natural that ¯ if x~ = 1 for some node i,<br />
then we should put it in the vertex cover S; and if * x 0<br />
i = , then we should leave<br />
it out of S. But what should we do with fractional values in between? What<br />
¯<br />
should we do if x .4 or * .5? The natural approach here is to round¯<br />
i = xi =<br />
¯ Xi --<br />
Given a fractional solution {x~}, we define S = {i ~ V" * > }}--that is, we<br />
rotmd values at least } up, and those below } down¯<br />
(11.24) The set S defined in this tray is a vertex cover, and tv(S)< tvLp.<br />
Proof. First we argue that S is a vertex cover. Consider an edge e ---- (i, ]). We<br />
claim that at least one of i and] must be in S. Recall that one of our inequalities<br />
is xi + xj > 1. So in any solution x* that satisfies this inequality, either x~ > }<br />
or x~* > }. Thus at least one of these two will be rounded up, and i or ] will be<br />
I -placed<br />
in S.<br />
Now we consider the weight iv(S) of this vertex cover. The set S only has<br />
vertices with x~ > }; thus the linear program "paid" at least }tvi for node i, and<br />
we only pay tvi: at most twice as much. More formally, we have the following<br />
chain of inequalities.<br />
i ieS ieS<br />
11.7 Load Balancing Revisited: A More Advanced LP Application<br />
Thus we have a produced a vertex cover S of weight at most 2tvLp. The<br />
lower bound in (11.23) showed that the optimal vertex cover has weight at<br />
least tvL~, and so we have the following result.<br />
(11.25) The algorithm produces a vertex cover S o~at most ttvi~e th~ minimum<br />
possible tvelght.<br />
* 11.7 Load Balancing Revisited: A ~ore Advanced<br />
LP Application<br />
In this section we consider a more general load balancing problem. We will<br />
develop an approximation algorithm using the same general outline as the 2approximation<br />
we iust designed for Vertex Cover: We solve a corresponding<br />
linear program, and then round the solution. However, the algorithm and its<br />
analysis here will be significantly more complex than what was needed for<br />
Vertex Cover. It turns out that the instance of the Linear programming Problem<br />
we need to solve is, in fact, a flow problem. Using this fact, we will be able<br />
to develop a much deeper understanding of what the fractional solutions to<br />
the linear program look like, and we will use this understanding in order to<br />
round them. For this problem, the only known constant-factor approximation<br />
algorithm is based on rounding this linear programming solution.<br />
~ The Problem _<br />
The problem we consider in this section is a significant, but natural, generalization<br />
of the Load Balancing Problem with which we began our study of<br />
approximation algorithms. There, as here, we have a set J of n jobs, and a set<br />
M of m machines, and the goal is to assign each job to a machine so that the<br />
maximum load on any machine will be as small as possible. In the simple Load<br />
Balancing Problem we considered earlier, each job j can be assigned to any<br />
machine i. Here, on the other hand, we will restrict the set of machines that<br />
each job may consider; that is, for each job there is just a subset of machines<br />
to which it can be assigned. This restriction arises naturally in a number of<br />
applications: for example, we may be seeking to balance load while maintaining<br />
the property that each job is assigned to a physically nearby machine, or<br />
to a machine with an appropriate authorization to process the job.<br />
More formally, each jobj has a fixed given size t] > 0 and a set of machines<br />
M~ ___ M that it may be assigned to. The sets ~ can be completely arbitrary.<br />
We call an assignment of jobs to machines feasible if each job j is assigned to<br />
a machine i e M]. The goal is still to minimize the maximum load on any<br />
machine: Using Ji _c J to denote the jobs assigned to a machine i e M in<br />
a feasible assignment, and using L~ = ~]~j; t] to denote the resulting load,<br />
637