Combinatorial optimization concerns finding an optimal solution from a discrete set of feasible solutions. In many of these problems, exhaustive enumeration of the solution space is intractable. The main goal of this course is to introduce students to efficient techniques for solving combinatorial optimization problems. The first part of the course will focus on algorithms for classical problems including maximum flow, minimum cut, minimum cost flow, matching theory, bipartite matching via flow, and Edmond’s blossom algorithm. The next part of the course will show how polyhedral theory can be used to deal with combinatorial optimization problems in a unifying manner. Topics include basic polyhedral theory, linear programming, integer programming, totally unimodular matrices (TUM), total dual integrality (TDI), and cutting plane theory. Other topics covered may include lattice theory and algorithmic geometry of numbers, semidefinite optimization, matroid theory, and submodular optimization. Course Notes: Familiarity with the basic concepts of Optimization (EN.625.615) and Graph Theory (EN.625.636) would be helpful but is not required.
Probability (EN.625.603 or similar course). Linear algebra and experience with reading and writing proofs as found in EN.625.609 or similar course.