Lecture links:

- Lecture 11 : April 17
- Covered: Network Flow + 3SUM surprise
- Class notes
- 260-network-flow.pdf
- 3sum.pdf (3SUM)

- Links
- 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

- Network flow

- 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)
- 260-ears.pdf (diagonals, ears and triangulations in polygons)
- 260-ultimate.pdf (finding a convex hull edge intersected by a ray)
- 260-2dLP.pdf (linear programming in 2D)

- Links
- Diagonals, ears, triangulations
- A project by Ian Garton.
- finding an ear

- 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

- Diagonals, ears, triangulations
- Further comments

- Lecture 9 : April 3
- Covered: Algorithmic Self-Assembly
- Links
- Doty, "Theory of Algorithmic Self-Assembly", 2012.
- Doty, Video: Theory of Algorithmic Self-Assembly.
- Patitz, "An Introduction to Tile-Based Self-Assembly", 2012.
- Winfree, "Algorithmic Self-Assembly of DNA", 1998.
- Soloveichik, Winfree, "Complexity of Self-Assembled Shapes", 2007.
- Rothemund, Winfree, "The Program-Size Complexity of Self-Assembled Squares", 2000.
- Adleman, Cheng, Goel, Huang, "Running Time and Program Size for Self-Assembled Squares, 2001.

- Lecture 8 : March 13
- Covered: Reductions, Lower Bounds
- Class notes:
- Links
- Wikipedia: 3SUM
- King, "A survey of 3SUM-hard problems", 2004
- Barequet and Har-Peled, "Polygon containment and translational in-Hausdorff distance between segment sets are 3SUM-hard
- Wikipedia: NP
- Wikipedia: NP-hard
- Wikipedia: P
- Wikipedia: P-complete
- Scott Aaronson: The Scientific Case for P != NP
- Greenlaw, Hoover, and Ruzzo,
__Limits to Parallel Computation: P-completeness Theory__ - Greenlaw, Hoover, and Ruzzo, "A compendium of problems complete for P
- Ben-Or, "Lower bounds for algebraic computation trees"
- Madhu Sudan Algebra and Computation Lecture 24: Ben-Or's Lower Bounds

- Lecture 7 : March 6
- Covered: Computation Models
- Class notes:
- Links
- Jeff Erickson on computation models in geometry
- Stack Overflow: "What are the reasons that researchers in computational geometry prefer the BSS/real-RAM model?"
- Ryan O'Donnell CMU 18-859 Lecture 5: Computation Models
- Hennie 1965.
- Oren Weimann MIT 6.851 Lecture 12: Models of Computation
- Yufei Tao CUHK 5020 Lecture 1: External Memory Model and Sorting
- Erik Demaine MIT 6.851 Lecture 7: Memory Hierarchies

- Lecture 6 : February 27
- Covered: Suffix trees, Theta graphs
- Class notes:
- Links
- Suffix trees
- Paper by Esko Ukkonen.
- Primary source
used for our class:
Chapters 5 and 6 of
*Algorithms on Strings, Trees and Sequences*by Dan Gusfield. (google books link) - wiki: suffix tree
- wiki: Ukkonen's algorithm
- notes from a computational genomics class from Duke (also with class number 260!). I have not examined these notes, but they seem well organized.

- 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.

- See chapter 4 (p.63-69) in the book

- Suffix trees

- Lecture 5: February 13
- Covered: Fibonacci Heaps, Splay Trees, Amortized Analysis.
- Notes:
- Links (Fibonacci Heaps and Shortest Path):
- Links (Splay Trees):
- Links (Amortized Analysis):

- Lecture 4 : February 6
- Covered: Covering and packing in graphs, NP-hardness, hypergraphs.
- Notes:

- Lecture 3 : January 30
- Covered: Polygonal path simplification. Spanners.
- Class notes:
- Links
- 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).

- Polygonal path approximation (iterative endpoints fit)

- 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:
- Links
- 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
- wiki
- Notes by Michiel Smid
- Notes by Terry Tao
- Applications: k-sets (see the wiki or the paper by Tamal Dey), and the Szemeredi-Trotter theorem on point-line incidences (wiki). Also, here is a wiki intro to a powerful advanced technique, the probabilistic method.

- 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

- Vizing's theorem
- 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 K
_{5}and K_{3,3}, vertex coloring and basic edge coloring. - Class notes:
- Links
- wiki: 4 color theorem
- wiki: Grotzsch's theorem
- wiki: Hadwiger-Nelson problem
- wiki: edge coloring
- Notes on Kuratowski's theorem (why any graph not containing K
_{5}or K_{3,3}as a subgraph -- or as a*minor*-- must be planar). All we saw in class was that containing one of those subgraphs implies non-planarity. I will probably not cover this unless the class would like to see it.

- Thoughts after class
- On the duality of edge coloring and vertex coloring: Yes, as suggested in class, these problems have the following equivalency:
Given a graph G, by placing a dual vertex
on every edge of G, and connecting dual vertices if their corresponding
*primal*edges in G have a common endpoint, we obtain what is called the*line graph*of G. Edge-coloring G is the same as vertex-coloring its line graph. Some care should be taken when considering these issues. Not all graphs are line graphs. Given that the number of vertices and edges change, algorithmic results might not be as useful when you dualize. It would be a good exercise to prove (or even state) some of the results we saw in class in terms of this duality.

This would be a really nice project topic!

- On the duality of edge coloring and vertex coloring: Yes, as suggested in class, these problems have the following equivalency:
Given a graph G, by placing a dual vertex
on every edge of G, and connecting dual vertices if their corresponding