  EECS 495: Approximation Algorithms
Instructor: Konstantin Makarychev
When: Spring 2017, MW 11:0012:20, Room Tech F281
What: This course studies approximation algorithms – algorithms that are used for solving hard optimization problems. Such algorithms find
approximate (slightly suboptimal) solutions to optimization problems in polynomial time. Unlike heuristics, approximation algorithms have provable
performance guarantees: they have bounds on the running time and on the quality of the obtained solutions. In this course, we will introduce various algorithmic
techniques used for solving optimization problems such as greedy algorithms, local search, dynamic programming, linear programming (LP), semidefinite programming (SDP),
LP duality, randomized rounding, and primaldual analysis.
Prerequisites: The course assumes background in basic probability theory and discrete mathematics. Key mathematical concepts will be reviewed before they are used.
Recommended texts
 “Approximation Algorithms” by Vijay Vazirani.
 “The Design of Approximation Algorithms” by David Williamson and David Shmoys. A copy of this book is available online
(http://www.designofapproxalgs.com/book.pdf).
Homework
 Monday, April 10: Problem Set #1 due Wednesday, April 19, Problem Set #1.
 Monday, May 1: Problem Set #2 due Wednesday, May 10, Problem Set #2.
 Monday, May 15: Problem Set #3 due Monday, May 22, Problem Set #3.
 Wednesday, May 22: Problem Set #4 due Monday, May 31, Problem Set #4.
Schedule
 Monday, March 22: Introduction to Approximation Algorithms. Travel Salesperson Problem (the Christofides 3/2approximation algorithm). Set Cover (log n approximation).
 Wednesday, March 29: Knapsack (2 approximation and PTAS).
 Monday, April 3: Bin Packing (2 approximation and PTAS). Makespan Scheduling on identical machines (4/3 approximation and PTAS).
 Wednesday, April 5: Scheduling with precedence constraints (Graham's 2approximation algorithm). Clustering. kcenter (2 approximation). kmeans. Lloyd’s algorithm.
 Monday, April 10: Review of previous lectures. kmeans++ (O(log k) approximation).
 Wednesday, April 12: kmeans++ (O(log k) approximation).
 Monday, April 17: Local Search. kmedian (5 approximation).
 Wednesday, April 19: Correlation Clustering (3 approximation)
 Monday, April 24: Linear Programming (LP). Set Cover. CPLEX vs Greedy Algorithm Demo.
 Wednesday, April 26: Vertex Cover. LP Duality (part I).
 Monday, May 1: LP Duality (part II). Examples. Min st Cut/Max Flow.
 Wednesday, May 3: Integrality of min st cuts. Multiway Cut (2 & 1.5 approximations)
 Monday, May 8: Multicut (log n approximation). Padded Decomposition.
 Wednesday, May 10: Embeddings into Trees & Random Trees. Applications.
 Monday, May 15: Sparsest Cut. Balanced Cut. LP Relaxation for the problems.
 Wednesday, May 17: Embeddings into L1. O(log n) approximation for Sparsest Cut. SDP Relaxation for Sparsest Cut.
 Monday, May 22: Graph Laplacian. Cheeger's Inequality. Max Cut.
 Wednesday, May 24:Workshop on Beyond WorstCase Analysis (no class)
 Monday, May 29: Memorial Day (no class)
 Wednesday, May 31: Coloring. Combinatorial Algorithm. SDP algorithm.
