The field of approximation algorithms has developed in response to the difficulty in solving a good many optimization problems exactly. In the case of NP-hard problems, we sacrifice optimality in the favor of efficient heuristics that give nearly-optimal (approximate) solutions, and aim for provable guarantees on the performance of these algorithms. This course will present some general techniques (such as convex programming-based approaches, randomness and metric methods) that underly these algorithms. The following is a selection of the techniques and problems that we will cover:
Techniques: greedy algos, local search, randomized methods, LP techniques, primal-dual method, lagrangean methods, semi-definite programming, metric methods, inapproximability.
Problems: Set cover. Vertex cover. TSP & other planning problems. Scheduling. Facility location. Steiner tree and other network design problems. Sparsest cut, multicut and other partitioning problems. MaxSAT. Generalized assignment problems. Graph coloring. Approximate counting.
The main reference for this course is the following book, but we will also include several recent papers in this area in our discussions. Please visit the reading list on the course webpage for extra reading material.
Vijay Vazirani, Approximation Algorithms, Springer, 2001.
Dorit S. Hochbaum, Approximation Algorithms for NP-hard Problems, PWS Publishing, 1997.
Rajeev Motwani and Prabhakar Raghavan, Randomized Algorithms, Cambridge University Press, 2000.
Jon Kleinber and Eva Tardos, Algorithm Design, Addison-Wesley, 2006.
Any one basic course in algorithms (577 or 787) or complexity (520, 810, or 830) is required. If you are unsure of whether you have sufficient background for this course or not, please contact the instructor within the first week.
Grading & Evaluation
Each student will be expected to scribe 3-4 lectures. There will be 3 homeworks (10% each), one take-home final (15%), and a class project (35%), all to be done individually. Details about the project and ideas for topics can be found here. Scribing and class participation count towards 20% of your final score.