CS 599: Approximation Algorithms for
NP-hard Problems.
Spring 2000-01
Instructor: Ashish Goel (agoel@cs.usc.edu)
Is a given
Boolean formula satisfiable? What is the best way of visiting all the cities on
my itinerary? What is the best multicast tree for my network? How should I
assign jobs to machines in a load-balanced fashion? Does my optimized code use
the smallest number of registers? Where should I place fire stations in Los
Angeles to minimize average response time in an emergency? Over the last two
decades, a tremendous variety of optimization problems (including all of the
above) have been proved to be NP-hard, making it unlikely that we can solve
them exactly. Given the importance of these problems and the diversity of the
application domains in which they arise, it is important to persist in the face
of the difficulty of these problems and find good approximate solutions. This
course will offer a gentle introduction to the field of approximation
algorithms. The main theme will be the design of an approximation algorithm
that is "close" to optimum for a given problem, and occasionally, to
discover lower bounds on the best approximation possible. We will also discuss
the use of emerging technologies such as DNA and Quantum computation as tools
for solving hard problems.
The course is intended to be of interest
to graduate students in Computer Science as well as Electrical Engineering,
Mathematics, and Computational Biology.
Prerequisite:
An algorithms course at USC (CS 570/CS 303 with at least an A-) or elsewhere
(with instructor's consent).
Textbook:
Approximation Algorithms for NP-hard Problems. Edited by Dorit S. Hochbaum. PWS
Publishing Company, 1997.
Note: We are
working towards allowing PhD students in Computer Science to use this course to
fulfill a theory core/track requirement. Contact the instructor for more
details.