
CS 231: Topics in Combinatorial Algorithms
Subhash Suri
TT 11:00-12:50
Room: Phelps 1401

Administrative Stuff
- TA for the course is Lijie Ren (lijie.ren@hotmail.com)
- TA Hours: Monday, 2-4 PM.
- TA Location: TA Office Phelps.
- Professor's office hours: Wednesdays 10-12.
Course Description
Algorithmic thinking is at the heart of computer science.
Whether we are concerned with sending messages in the Internet,
understanding the structure of a social network, designing autonomous
robots, measuring reliability of complex systems, or auctioning the wireless
spectrum, the underlying core problem is often an algorithmic one.
The problems, however, rarely come as cleanly packaged, mathematically
precise questions, and so the algorithmic enterprise necessarily
consists of first getting to the mathematical core of a problem, and then
identifying the appropriate algorithm design technique.
The goal of this course is to expose students to this process using a
variety of topics and techniques. The general theme of the course is combinatorial
algorithms, which can be described loosely as those dealing with discrete
structures such as graphs and networks. The course is structured around a
loosely related set of techniques and topics that I consider both fundamental
and great examples of theoretical elegance.
Schedule
The tentative schedule for the course can be found here.
Homework Assignments
- 1. Homework #1. Due 10/7/10.
- 2. Homework #2. Due 10/21/10.
- 3. Homework #3. Due 11/9/10.
- 4. Homework #4. Due 12/2/10.
Syllabus
- Shortest Paths Lecture Notes.
- Label-Correcting algorithms, Bellman-Ford, Floyd-Warshall.
- Applications of shortest path problem.
- Label-Setting Algorithms, Dijkstra.
- How to detect negative cycles?
- All-pair shortest paths.
- Min Spanning Trees Lecture Notes.
- Cut and cycle conditions of optimality.
- Prim, Kruskal, and Sollin's algorithms.
- Spanner networks and cost-quality tradeoffs.
- Matching Lecture Notes.
- Applications of assignment.
- Bipartite matching using network flow.
- Hungarian method for assignment.
- Stable matching and its applications.
- Network Flows Lecture Notes.
- Applications of network flows.
- Augmentation, Ford-Fulkerson.
- Maximum Flow- Minimum Cut theorem.
- Edmonds-Karp heuristics.
- Preflow-Push algorithms.
- Applications of Maxflow-Mincut theorem.
- Karger's mincut algorithm.
- Mincost flows Lecture Notes.
- The Probabistic Method Lecture Notes.
- Linear and Integer Programming Lecture Notes.
- Formulation.
- Simplex method.
- LP Duality.
- Integer Programming.
Schedule
The tentative schedule for the course can be found here.