Topics in Algorithms
The goal of the course is to introduce some advanced techniques in design and analysis of algorithms. A basic course in algorithms introduces students to fundamental problems like spanning trees, shortest paths, network flows and cuts. In this course, we will see faster algorithms and more variants of these problems (e.g. minimum cost flows, multicommodity flows,
Steiner trees, minimum cost arborescnences etc.)
and some approximation and randomized algorithms for some of them. This will also give an introduction to techniques like amortized analysis, use of linear and semidefinite programs, metric embeddings etc.
Prerequisites
A basic course in algorithms, discrete maths, and mathematical maturity.
Evaluation
There will be a midsem and endsem, apart from assignments. We will decide on presentations depending on the final strength of the class.
References
There is no single book. I will use various lecture notes and books, and post them here for each lecture. Some topics will be covered from the following books/notes:
- [VV] Approximation Algorithms by Vijay V. Vazirani
- [WS] The Design of Approximation Algorithms by David P. Williamson, David B. Shmoys
- [MG] Understanding and Using Linear Programming by
Jiří Matoušek and
Bernd Gärtner (Springer)
- [AG] Notes by Anupam Gupta from CMU
Problem set and presentation topics
Lectures
Material covered so far in each lecture:
- Jan 6: Introduction, recap of Prim's and Kruskal's minimum spanning tree algorithms (Ref: Any algorithms book that you used in your basic algorithms course e.g. [CLRS])
- Jan 10: Fibonacci heaps (these notes or Algorithms book by Dexter Kozen)
- Jan 15: Borůvka's algorithm, Fredman-Tarjan's O(mlog*n) algorithm (Chapter 1 of [AG], also see this)
- Jan 17: Randomized linear-time algorithm for MST (Karger-Klein-Tarjan algorithm) (Chapter 1 of [AG])
- Jan 22: Steiner trees: NP-hardness (ref), 2-approximation (Section 3.1 of [VV])
Jan 24: No class due to Tesselate
- Jan 29: Minimum-cost arborescence: Edmond's algorithm (Chapter 2 of [AG]), a (very brief) introduction to matroids and greedy algorithms (Ref)
- Jan 31: Introduction to LP duality, weak duality, strong duality (without proof), primal-dual algorithm for minimum spanning trees (See this and this for the primal-dual MST algorithm, [MG] for linear programs, duality, complementary slackness)
- Feb 5: Tree packing and Tutte-Nash-Williams theorem (only statement), LP for the fractional version and its dual (mincut LP) (reference)
Feb 7: No class
- Feb 12: Proof of fractional version of Tutte-Nash-Williams theorem (Ref same as above), a very brief overview of ellipsoid algorithm, proof of complementary slackness
- Feb 14: Separation oracle for the dual LP, solving tree packing LP in polytime (Ref as above and this)
- Feb 19: Computing mincut using tree packings (Reference, also see these notes for ellipsoid method, apart from [MG])
- Feb 21: Student presentation 1 [Qusai]: Linear-time MST verification algorithm (Section 1.5 of these notes, also check these slides)
- Feb 26: Student presentation 2 [Shubh]: Continuation of the above
- Feb 28: Multiway cut: 2-approximation by isolating cuts, LP formulation and separation oracle, brief introduction to APX-hardness, integrality gap (Reference: roughly sections 15.1, 15.2 of these notes)
Midsem week
- Mar 12: Multiway cut: CKR rounding (Reference)
- Mar 14: Multiway cut CKR rounding continued
- Mar 19: Maximum multicommodity flow: using ellipsoid method, Garg-K\"{o}nemann algorithm (Reference)
- Mar 21: Maximum multicommodity flow continued
- Mar 26: Steiner mincut via isolating cuts (randomized algorithm) (Reference)
- Mar 28: Steiner mincut continued
- Apr 2: Topic on popular demand: APX-hardness and PTAS reductions (Ref)
- Apr 4: Approximating distances in graphs: multiplicative spanners (Ref)
- Apr 5: Student presentation: Cactus representation of mincuts
- Apr 9: Student presentation: Proof of Tutte-Nash-Williams theorem
- Apr 11: Additive spanners (References: these and these notes)
- Apr 12: Student presentation: Separator Theorem for minor free graphs
- Apr 12: Student presentation: Two-commodity flows
- Apr 14: Student presentation: Two-commodity flows continued
- Apr 16: Low-stretch spanning trees (Chapter 4 of these notes)
- Apr 18: Student presentation: Polynomial-time algorithm for minimum k-cut for fixed k
- Apr 18: Student presentation: same as above
- Apr 19: Low-stretch spanning trees continued (See these notes)
- Apr 19: Student presentation: Gomory-Hu trees
- Apr 21: Student presentation: Oblivious routing
- Apr 21: Student presentation: Multi-commodity max-flow min-cut theorem statement, tightness, and application to balanced cuts