Lecture Summaries  for 308-360B                     Winter 2003

      also check:  announcements      assignments    return to:  course home page

You will need the lp package lp_solve for the next part of the course, please check announcements for details.

Notes for Linear Programming:      http://cgm.cs.mcgill.ca/~avis/courses/360/notes/    Either: fukuda.pdf or fukuda.ps

Notes for NP-completenss: Handout given in class,  also available at Copi-EUS.


For office hours during exam period, please see announcements


April 10: Final monologue and question period. Good luck on the exam.


April 8: Reductions from SAT to 3-SAT, 3-SAT to Subset Sum. Read: Sections 35.5.1, 35.5.5


April 3: More reductions. Ind. set to clique and vertex cover,  Sat to 3-Sat.  Finding the "boundary" between P and NP-complete. Read: Text Ch 34, 966-986
April 1: NP-hard vs NP-complete. Cook's theorem and it implications. How to prove problems are NP-complete using polynomial time reductions. First reduction: sat to ind. set. Assigment 4 is posted.

Mar 27: Definitions of polynomial reducibility, non deterministic algorithms and the class NP.
Emphasis on checking the "yes" answer in polynomial time by use of a certificate.
Read: Read NP-completeness handout
Mar 25: Introduction to NP completeness. Easy and hard problems. Examples of obtaining hard problems from easy ones by
small modifications. Properties of "hard" problems.

Mar 20: Bohdan's lecture on finding a feasible solution to a system of inequalities using the b-rule.
Read:  brule.ps (brule.pdf) at least first 4 pages.
Mar 18: Certificates of optimality, infeasibility and unboundedness. The weak duality theorem.
Read: LP notes  up to and including Section 2.4.
Mar 13: Introduction to  linear programming, the wine production problem. Formulation of a LP in standard form, and integer linear program (ILP). Introduction to proof of optimality via positive combinations of constraints.
Read:  LP  notes up to P. I-5.
Mar 11: Max flow min cut theorem, Integrality theorem. We used this theorem to prove that a bipartite graph in which each vertex has degree k has a perfect matching. Variants to guarantee polynomial time: augmenting path using minimum number of edges (Edmonds-Karp) and augmenting path of maximum capacity.
March 8: Discussion of midterm. Implementation of the network flow algorithm.
Mar 4: Midterm

Feb 20: Augmenting Paths. Matchings. Relationship of matching algorithm using alternating paths to network flow algorithm using augmenting paths.
Read: handout from Feb 11 up to, but not including, the Augmenting Path theorem.
Feb 18: Network Flows. Basic concepts, augmenting paths, cuts.
Feb 13:  The Stable Marriage Problem. Today we learned the important:

Lesson in love: Unless you are fantastically good-looking, you need to take the initiative.


Read:  David Feldman's notes, and the New Scientist article, which contains the above quote.



Feb 11: Bipartite matchings. Solution by alternating paths. A Vertex Cover for a graph G is a subset S of vertices such that each edge of G has at least one of its endpoints in S. We saw that for any matching M and any vertex cover S, the number of edges in M is at most the number of vertices in S.
Get handout Matchings and Flows from Copi-EUS, ground floor of McConnell Engineering. Read section 7.10 of the handout.


Feb 6: Johnson's algorithm. Read: Section 25.3


Feb 4: Disjkstra's algorithm for directed graphs with non-negative edge weights. Comparison with Prim's algorithm. Checking the correctness of a shortest paths treee by one iteration of the Bellman-Ford algorithm.
Read: Chapter 24 up to the end of Section 24.3

Jan 30: Introduction to directed graphs and shortest path problems. Bellman-Ford algorithm for directed graphs with negative edge weights.
Read: Bruce Reed's handout(pdf) and Section 24.1.


Jan 28: More examples of dynamic programming. Paths through a grid. Knapsack Problem (see Ex. 16.2-2, p. 384). C code for knapsack problem and sample run is here.

Read: David Bryant's  Handout(pdf) .


Jan 23: Introduction to dynamic programming. Matrix chain multiplication.
Read: David Bryant's  Handout(pdf). Section 15.2.


Jan 21: The algorithms of Prim and Kruskal, and implementations in O(mlogn) time.
Read: Finish reading chapter 23.    Tutorials start today!


Jan 16: Proof of the optimality of the greedy algorithm (I added this proof to the course notes selection.(pdf)) Introduction to minimum spanning trees. Kruskal's algorithm viewed as  an example of greedy selection. Read: Section 16.4,  Start reading chapter 23.


Jan 14: Introduction to selection problems, weighted selection problems and the greedy algorithm.
Read: Course notes on selection (pdf) and do the exercises!


 Jan 9: Outline of material to be covered in the course. General notions of easy and hard problems.
Greedy algorithms. Sushi (knapsack) problem.
Read: Sections 16.1, 16.2 ( 17.1, 17.2 first edition).
Exercise: Prove the greedy heuristic finds an optimal solution for the fractional knapsack problem.


Jan 7: Introduction to course via statement of two problems: the assignment problem and the travelling salesman problem.
Read: introduction(pdf)