• Lecture 11 : April 17
• Covered: Network Flow + 3SUM surprise
• Class notes
• Network flow
• CLRS covers network flow in chapter 26. There is a lot more detail, and more advanced algorithms are given as well.
• Example showing how the Ford-Fulkerson algorithm might not terminate or even converge, if capacities are irrational.
• 3SUM

• Lecture 10 : April 10
• Covered: Linear-time prune and search algorithms in computational geometry.
• Class notes (not all material is relevant; some is in the context of more general problems)
• Diagonals, ears, triangulations
• Finding a convex hull edge intersected by a ray
• Notes by Samir Khuller on the Kirkpatrick-Seidel ultimate convex hull algorithm. This contains the procedure we covered.
• 2d LP
• A paper by Nimrod Megiddo containing the algorithm for LP in 2D (section 2). It also contains extensions and applications.
• Another paper by Megiddo on LP for any fixed dimension.
• See section 4 of this link for the 2D LP algorithm. See also this applet but ignore the description.
• The most important lesson of this lecture is that failing but removing a constant fraction of data is equivalent to succeeding. Another classic example of this is linear-time median computation.
Here are a couple of xkcd's on geometric series: 994 ... 1153 ... (don't forget to mouse-over)

• Lecture 9 : April 3
• Covered: Algorithmic Self-Assembly

• Lecture 8 : March 13
• Covered: Reductions, Lower Bounds
• Class notes:

• Lecture 7 : March 6
• Covered: Computation Models
• Class notes:

• Lecture 6 : February 27
• Covered: Suffix trees, Theta graphs
• Class notes:
• Suffix trees
• Theta graphs
• See chapter 4 (p.63-69) in the book Geometric Spanner Networks, by Narasimhan and Smid. This is followed by a description of how to construct Theta graphs. Also, on p470, section 20.3, there is a discussion of plane spanners, such as the one by Chew that we covered previously. Section 20 lists several open problems. This book could be useful to browse through for project ideas, if you like spanners. If you can't find the book, ask me.
• wiki on Theta graphs
• wiki on Yao graphs which are quite similar.

• Lecture 5: February 13
• Covered: Fibonacci Heaps, Splay Trees, Amortized Analysis.
• Notes:
• Handwritten slides on Fibonacci heaps as a pdf.
• Handwritten slides on splay trees heaps as a pdf.
• Homework problems as a pdf.
• Links (Fibonacci Heaps and Shortest Path):

• Lecture 4 : February 6
• Covered: Covering and packing in graphs, NP-hardness, hypergraphs.
• Notes:
• Finely typeset prose as a pdf.
• Sketchy handwritten slides as a pdf.
• Homework problems as a pdf.

• Lecture 3 : January 30
• Covered: Polygonal path simplification. Spanners.
• Class notes:
• Polygonal path approximation (iterative endpoints fit)
• The simple algorithm that we saw is also called the "Ramer-Douglas-Peucker" algorithm. See the wiki. In the references are the original two papers, plus a speed-up by Hershberger and Snoeyink.
• I still need to find the original Iri-Imai paper (and/or other sources about it, and possible improvements).
• Spanners
• Tech report by Paul Chew (should be equivalent to his conference publication), on the empty L1-circle spanner.
• Link to the journal version of Chew's work, where the empty circle is actually an equilateral triangle. Improves the L1 result. For a copy of the paper, please ask.
• wiki on geometric spanners.
• The result involving coffee. (lower bound on stretch factor of Delaunay triangulation)
• Extra note: finding the longest path in a graph is an NP-hard problem. On the other hand, finding the shortest path can be done efficiently for graphs without negative-weight cycles. That's why finding the longest path in a DAG is also efficient. See this wiki (and in particular the section on acyclic graphs).

• Lecture 2: January 23
• Covered: Vizing's theorem (edge coloring), bipartite matchings, crossing number inequality.
• Remember, I assigned homework: see page 4 of the Bipartite Matching notes.
• Class notes:
• Vizing's theorem
• The theorem is found in several texts on graph theory. For instance, "Graph Theory" by Reinhard Diestel. In addition, here are some links that can be found online.
• Notes by Michele Zito, most closely matching what I did in class. In fact here is another description, apparently partially inspired from the previous one.
• A different proof from the homepage of Lex Schrijver.
• Another proof on planet math.org.
• This presentation uses induction on vertices and is based on "Short Proofs of Classical Theorems", by Adrian Bondy. I have a copy if anyone is interested. Generally there are some other theorems in there that might be worth taking a look at (project). The proof in the presentation is not rigorous.
• The crossing number inequality
• Bipartite matching (just Hall's theorem)
• What I covered is found in the Graph Theory book by Diestel. Please ask me if you need to see a copy. There are many resources online. Please send me your favorite ones and i'll add them here.
• wiki
• Graph drawing, presenting different proofs of Vizing's theorem, doing a demo or implementation, presenting applications of the crossing number, exploring the probabilistic method in general; all of these are potential project topics.

• Lecture 1: January 16
• Intro to the course
• Covered: Euler's theorem, planarity vs K5 and K3,3, vertex coloring and basic edge coloring.
• Class notes: