04.09.2013 Views

Algorithm Design

Algorithm Design

Algorithm Design

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

660<br />

Chapter 11 Approximation Mgofithms<br />

The linear programming rounding algorithm for the Weighted Vertex Cover<br />

Problem is due to Hochbaum (1982). The rounding algorithm for Generalized<br />

Load Balancing is due to Lenstra, Shmoys, and Tardos (1990); see the survey<br />

by Hall (1996) for other results in this vein. As discussed in the text, these<br />

two results illustrate a widely used method for .designing approximation algorithms:<br />

One sets up an integer programming formulation for the problem,<br />

transforms it to a related [but not equivalent) linear programming problem,<br />

and then rounds the resulting solution. Vaziranl (2001) discusses many further<br />

applications of this technique.<br />

Local search and randomization are two other powerful techniques for<br />

designing approximation algorithms; we discuss these connections in the next<br />

two chapters.<br />

One topic that we do not cover in this book is inapproximabilitY. Just as<br />

one can prove that a given NP-hard problem can be approximated to within<br />

a certain factor in polynomial time, one can also sometimes establish lower<br />

bounds, showing that if the problem could be approximated to witl.g.’n better<br />

than some factor c in polynomial time, then it could be solved optimally,<br />

thereby proving T = 3q~P. There is a growing body of work that establishes such<br />

limits to approximability for many NP-hard problems. In certain cases, these<br />

positive and negative results have lined up perfectly to produce an approximation<br />

threshold, establishing for certain problems that there is a polynomial-time<br />

approximation algorithm to within some factor c, and it is impossible to do<br />

better unless ~P = %f~P. Some of the early results on inapproximabilitY were not<br />

rove, but more recent work<br />

;~ is<br />

has<br />

covered<br />

introduced<br />

in the survey<br />

powerful<br />

by Arora<br />

techniques<br />

that become quite intricate. ~m~ tup~<br />

and Lund (1996).<br />

Notes oft the Exercises Exercises 4 and 12 are based on results of Dorit<br />

Hochbaum. Exercise 11 is based on results of Sartaj Sahni, Oscar Ibarra, and<br />

Chul Kim, and of Dorit Hochbaum and David Shmoys.<br />

Cha~ter<br />

Local Search<br />

In the previous two chapters, we have considered techniques for dealing with<br />

computationally intractable problems: in Chapter 10, by identifying structured<br />

special cases of NP-hard problems, and in Chapter 11, by designing polynomialtime<br />

approximation algorithms. We now develop a third and final topic related<br />

~<br />

Local search is a very general technique; it describes any algorithm that<br />

"explores" the space of possible solutions in a sequential fashion, moving<br />

in one step from a current solution to a "nearby" one. The generality and<br />

flexibility of this notion has the advantage that it is not difficult to design<br />

a local search approach to almost any computationally hard problem; the<br />

counterbalancing disadvantage is that it is often very difficult to say anything<br />

precise or provable about the quality of the solutions that a local search<br />

algorithm finds, and consequently very hard to tell whether one is using a<br />

good local search algorithm or a poor one.<br />

Our discussion of local search in this chapter will reflect these trade-offs.<br />

Local search algorithms are generally heuristics designed to find good, but<br />

not necessarily optimal, solutions to computational problems, and we begin<br />

by talking about what the search for such solutions looks like at a global<br />

level. A useful intuitive basis for this perspective comes from connections with<br />

energy minimization principles in physics, and we explore this issue first. Our<br />

discussion for this part of the chapter will have a somewhat different flavor<br />

from what we’ve generally seen in the book thus far; here, we’ll introduce<br />

some algorithms, discuss them qualitatively, but admit quite frankly that we<br />

can’t prove very much about them.<br />

There are cases, however, in which it is possible to prove properties<br />

of local search algorithms, and to bound their performance relative to an

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!