CS 261: Optimization and Algorithmic Paradigms
- 4/3: The first exercise set has been posted.
Further exercises sets will follow on a weekly basis, posted
under "Coursework" below
on Thursday or Friday. (Remember these are not to be turned in.)
- 3/30: Welcome to CS261!
Instructor:
-
Tim
Roughgarden (Office hours: Thursdays 11 AM - Noon, Gates 474. Email: tim@cs.stanford.edu).
Course Assistants:
-
Weihao Kong
(Office hours: Mondays 10-noon (Gates 486).
Email: kweihao@gmail.com).
-
Lan Huong Nguyen
(Office hours: Mondays 3-5 (Huang basement).
Email: lanhuong@stanford.edu).
-
Joshua Wang
(Office hours: TBA.
Tuesdays 2-4 (Huang basement).
Email: jrwang@stanford.edu).
Time/location: 9:30-10:45 AM Tue/Thu in 380-380C.
Piazza site: here.
Email address for PSet submissions:
cs261submissions@gmail.com
Staff mailing list:
cs261-spr1415-staff@lists.stanford.edu
Prerequisites: CS161 or equivalent.
Algorithms for network optimization: max-flow, min-cost flow,
matching, assignment, and min-cut problems. Introduction to linear
programming. Use of LP duality for design and analysis of
algorithms. Approximation algorithms for NP-complete problems such as
Steiner Trees, Traveling Salesman, and scheduling problems. Randomized
algorithms. Introduction to online algorithms.
- Exercise Sets (0%):
Exercise sets will be handed out weekly and are meant to help
you keep up with the course material.
Do not turn in your solutions. Think about them and discuss with
fellow students or the course staff any that you cannot answer.
Roughly half of the final exam will consist of
variations of problems on these exercise sets.
- Problem Sets (75%):
There will be 4 problem sets. Here is the schedule:
- Problem Set Policies:
- These are challenging are you are strongly encouraged to form
groups, of up to three students. Each group should turn in a single
write-up (all students of the group receive the same score).
- You can form different groups for different problem sets.
- You can discuss problems with students from other groups
verbally and at a high level only.
-
Except where otherwise noted, you may refer to your course notes, the
textbooks and research papers listed on the course Web
page only. You cannot refer to textbooks, handouts, or
research papers that are not listed on the course home page. If you
do use any approved sources, make you sure you cite them
appropriately, and make sure that all your words are your own.
- You are strongly encouraged to use LaTex to typeset your write-up.
Here's a LaTeX template that you can use to
type up solutions. Here
and here are good
introductions to LaTeX.
- We expect you to follow
the honor
code.
- Submit your solutions by email to cs261submissions@gmail.com.
- Late Days:
- One late day equals a 24-hour extension.
- Each student has two free late days.
- At most two late days can be applied to a single assignment;
after Thursday midnight (following the original due date) no solutions
will be accepted.
- Each late day used after the first two will result in a 25%
penalty.
- Example: a student had one free late day remaining but his/her
group uses two late days on a Problem Set. If the group's write-up
earns p points, the student receives a final score of .75*p points
for the assignment.
- In-Class Final Exam (25%):
Date: Friday, June 5, 12:15-3:15 PM. Location:
Braun Auditorium, Mudd Chemsitry Building.
- Note: We initially listed the incorrect date of June 10th.
The final exam will be June 5th, as specified by the registrar.
- Roughly half of the questions will be variations on exercise set
questions.
- The exam is closed-book/computer; however, you are allowed
to bring two
double-sided sheets (4 pages) of notes, which you must prepare
by yourself.
Resources
- There is no required textbook. Much of the material is covered in
lecture notes for previous offerings of CS261
by Plotkin and Trevisan. See the
lecture schedule below for details.
- Lecture 1 (Tue 3/31):
Course goals.
Introduction to the maximum flow problem.
The Ford-Fulkerson algorithm. Flows and cuts.
- Lecture 2 (Thu 4/2):
Proof of the max-flow/min-cut theorem.
Augmenting on shortest paths (Edmonds-Karp).
The blocking flow approach (Dinic).
- Lecture 3 (Tue 4/7):
Push-relabel algorithms for max flow.
- Lecture 4 (Thu 4/9):
Push-relabel recap. The s-t min-cut problem.
Application to image segmentation.
The cutting edge of maximum flow algorithms.
- Lecture 5 (Tue 4/14): Bipartite and nonbipartite matching.
Optimality conditions: "obvious obstacles" to matchings.
Searching for augmenting paths.
- Lecture 6 (Thu 4/16): Completion of Edmonds's Blossom
algorithm.
- Lecture 7 (Tue 4/21):
Maximum-weight matching in bipartite graphs.
The Hungarian (Kuhn-Munkres) algorithm.
Discussion of the minimum-cost flow and
weighted (non-bipartite) matching problems.
- Lecture 8 (Thu 4/23): Linear programming and duality:
introduction.
- Lecture 9 (Tue 4/28): Linear programming and duality:
examples. Min-cost perfect matching and max-flow/min-cut revisited.
- Lecture 10 (Thu 4/30):
Recap of use cases of linear programming and strong LP duality.
Survey of algorithms for linear programming.
Separating hyperplanes, Farkas's Lemma, and strong LP duality.
- Lecture 11 (Tue 5/5):
Compromises for NP-complete problems.
A fixed-parameter tractable algorithm for Vertex Cover.
Introduction to approximation algorithms: Knapsack
and makespan minimization.
- Lecture 12 (Thu 5/7): Approximation algorithms
for the Traveling Salesman Problem (TSP).
- Lecture 13 (Tue 5/12):
Using linear programming in
the design and/or analysis of approximation algorithms.
Dual-based analysis of the greedy Set Cover algorithm.
LP rounding for Vertex Cover.
- Lecture 14 (Thu 5/14):
Top five tools in the analysis of randomized algorithms.
Chernoff bounds.
Randomized rounding.
Low-congestion routing.
- Lecture 15 (Tue 5/19):
Categories of approximation guarantees.
Categories of hardness.
Integrality gaps.
Gap reductions.
Case study: vertex-disjoint paths in directed graphs.
- Trevisan survey
on hardness of approximation.
- Paper by Guruswami/Khanna/Rajaraman/Shepherd/Yannakakis on disjoint
paths (see Section 3.1).
- Lecture 16 (Thu 5/21):
Introduction to online algorithms.
Case study #1: online bipartite matching.
- Lecture 17 (Tue 5/26):
Finish online bipartite matching. Case study #2:
online Steiner tree.
- Same references as last lecture,
plus Section 13.5 of the
Plotkin notes.
- Lecture 18 (Thu 5/28):
Introduction to streaming algorithms.
- Lecture 19 (Tue 6/2):
A taste of selfish routing. Course recap. (Optional lecture)