9/30: Introduction, closest pair algorithm. Go over the class Web page. Read section 33.4 in the book.
Question: On page 959, step 2 of the algorithm, we examine the seven points following p in the list. True or false: at most one of these can be within distance delta of p. Notes on the
arguement we used to show that at most five points can fit into a box of size
delta.
10/3: Details of closest pair algorithm.
10/5: Recurrence relations, Big-O, and proof by substitution. Read sections 4.1 and 4.2.
10/7: Randomized selection algorithm, Section 9.2. Concepts from probability, Appendix C.2 and C.3.
Problem: Prove that for a random variable Y which only takes values
zero and one, E[Y] = Pr[Y=1].
10/10: Analyis of randomized selection algorithm, Section 9.2.
Problem: We went over the analysis in the book which gives an
upper bound for selecting the ith element, irrespctive of the choice
of i. Do a more detailed version of the analysis which takes the
choice of i into account. Does the algorithm run more quickly or more
slowly for the choice of i = sqrt(n), than it does for the choice of
i=n/2?
10/12: Solving the recurrence for randomized selection, Section 9.2. Expected number of rolls before we get a 6, the geometric distribution, Section C4.
10/14: Lower bound on sorting, Section 8.1.
Question: We showed in class that (n/2)lg(n) - (n/2) is
Big-Omega(n lg n). Is it also O(n lg n)?
10/17: Some big-picture stuff, then introduction to hashing and universal families of hash functions. Sections 11.2 and the begining of 11.3.3.
10/19: Review of prime factorization and modular arithmetic, and handy Claim. These notes on these last two lectures were distributed in class on Friday.
10/21: Theorem 11.5.
Problem: We defined the function g(x) = ax + b mod p. Prove that
the sequence g(0), g(1), ... g(p-2), g(p-1) is a permutation of the
sequence 0,1,...,p-2,p-1.
10/24: Finish Section 11.3.3.
10/26: Go over practice midterm.
10/28: Midterm
10/31: Dynamic programming algorithm for multiplying a sequence of matrices. Section 15.2.
11/2: Section 15.2 continued, begin Section 15.4 on Longest common subsequence.
Problem: Find the running time for the recursive Print-Optimal-Parens function
at the end of Section 15.2.
11/4: Section 15.4, Longest common subsequence, continued.
11/7: Intro to Chapter 24, then Section 24.3 on Dijkstra's algorithm.
11/9: Implementation of Djikstra's algorithm.
11/11: Veteran's day.
11/14: The Bellman-Ford algorithm for graphs with negative edges. Section 24.1.
11/16: Kruskal's minimum spanning tree algorithm. Chapter 23.
11/18: Union-Find data structure, Section 21.3.
11/21: Midterm review.
11/23: Midterm
11/25: Holiday
11/28: NP-completeness introduction. Longest path and reduction from Hamiltonian Path. Section 34.3.
11/30: NP-completeness reduction examples. Clique from 3-CNF-SAT, Section 34.5.1. Vertex cover from Clique, Section 34.5.2.
12/2: If SAT is solvable in polynomial time, so is any poly-time checkable problem. Section 34.3, in way too much detail.....
12/5: Approximation algorithms for NP-complete problems, definition of approximation ratio. Approximation algorithm for Vertex Cover, Section 35.1.
12/7: There is not approximation algorithm for STP with arbitrary edge lengths, but there is for TSP with the triangle inequality. Section 35.2.
12/9: Branch-and-bound for TSP with the triangle inequality. Not in the book.