Running summary of what we did in class. Jan. 3: Introduction to the class; intro to divide and conquer; a quick review of Merge Sort and Merge, and worst-case time analysis using a recurrence; solving the recurence by unwrapping. Start of the divide and conquer algorithm for finding the closest pair of points on the plane. Jan. 6 Completion of the algorithm for finding the closest pair of points on the plane. O( n log n) worst case time, down from O(n^2). Strassen's matrix multiplication method by divide and conquer. A video for this lecture has been posted on the class webpage. Jan. 11 Information theory lower bounds for sorting; the start of Adversary lower bounds for the problem of finding the median of n numbers. See videos of these lectures on the 2007 lectures linked from the class website. Jan. 13 Completion of the adversary bound for median finding. Start of Four Russian's method for bit matrix multiplication. A video of the Four Russian's method has been posted on the class website. Jan. 18 Completion of the Four Russian's method for bit matrix multiplication. Start of Dynamic Programming for sequence alignment. Jan. 20 Completion of Dynamic Programming for sequence alignment. Jan. 25 Advanced sequence alignment problems: sequence alignment in linear space but the same asymptotic run time; aligning circular strings faster than the obvious approach. A video on these topics has been posted on the class website. Jan. 27 Completion of the circular alignment problem; Start of the discussion on minimum cost arborescence problem. Feb. 1 Completion of the minimum cost arborescence problem. A video is on the class website. Feb. 3 Midterm Feb. 8 start of network flow and Ford-Fulkerson algorithm Feb. 10 Max-Flow Min-Cut Theorem and applications. Feb. 15 More on Max-Flow Min-Cut and applications. Applying the Max-Flow Min-Cut Theorem for applications involving sets of *edges*. That is, up until this point, an s,t cut was defined as a partition (A,B) of the *nodes* with s in A and t in B. But often it is useful to think about an s,t cut as a set of edges whose removal disconnects s from t. How do we go between these to definitions. Feb. 17 The Delta-scaling version of the Ford-Fulkerson algorithm gives a polynomial time algorithm for computing max-flow and min-cut. Feb. 22 The use of max-flow to determine if a team is eliminated near the end of a season. That topic is covered in the book. Then, sports elimination numbers for monotonic scoring schemes. This is not in the book but I have posted a link to videos for this material on the class website. Feb. 24 The problem of determining which teams can be undisputed champions. We developed an algorithm that identifies all of the teams. That algorithm can be implemented with one network flow. The details of that flow computation are in HW 7. March 1. The global min cut problem. The last lectures: Finding the least common ancestor in constant time, after $O(n)$ preprocessing time. P, NP, poly-time reductions, NP-completeness.