This is the companion website for the book *The Design of Approximation Algorithms* by David P. Williamson and David B. Shmoys,
published by Cambridge University Press.

Interesting discrete optimization problems are everywhere, from
traditional operations research planning problems, such as
scheduling, facility location, and network design, to computer
science problems in databases, to advertising issues in viral
marketing. Yet most interesting discrete optimization problems
are NP-hard. Thus unless P = NP, there are no efficient
algorithms to find optimal solutions to such problems. This
book shows how to design *approximation algorithms*:
efficient algorithms that find provably near-optimal solutions.

The book is organized around several central algorithmic techniques for designing approximation algorithms, including greedy and local search algorithms, dynamic programming, linear and semidefinite programming, and randomization. Each chapter in the first part of the book is devoted to a single algorithmic technique, which is then applied to several different problems. The second part revisits the techniques, but offers more sophisticated treatments of them. The book also covers methods for proving that optimization problems are hard to approximate.

Designed as a textbook for graduate-level algorithms courses, the book will also serve as a reference for researchers who are interested in the heuristic solution of discrete optimization problems.

An electronic-only edition of the book is provided in our Download section.