Prerequisite
18.06 Linear Algebra or 18.700 Linear Algebra.
Description
The course will present a thorough introduction to the fundamental algorithmic techniques of Discrete Mathematics - Linear and Convex Programming, Flow & Matching Theory, Randomization, and Approximation. We will tackle a variety of optimization problems by applying these techniques to find efficient algorithms.
Topics include
-
How fast can a maximum matching be found in a graph?
-
Why is the maximum flow equal to the minimum cut?
-
What is duality and how to make use of it?
-
Is optimization reducible to random sampling?
-
Is there a strongly polynomial-time algorithm for linear programming?
-
How to find a short traveling salesman tour?
-
How to find disjoint flow paths?
Format
In addition to 3 hours of lectures each week, students will have regular assignments, and two in-class exams. There will also be a course project which can be either theoretical (e.g. write a report, solve an open problem) or practical (e.g. evaluate an algorithm).
Project
For the course project you will:
-
Work on a problem and/or experimentally evaluate an algorithm;
-
Write a short report and present your findings to class.
Students can work individually or in pairs.
Projects should be set up by the day after session #5.
Grading
| Exam I |
25% |
| Exam II |
25% |
| Project (20% for Research + 6% for Presentation) |
26% |
| Assignments |
24% |
|