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.