15-451/651 Algorithms 9/9/14 Recitation problems Splay Trees ------------------ Review lecture notes on splay trees Extra splay tree topics - Perform split(S,k) and Join(S,T) in O(log n). - Augmented BSTs Ternary Counter ------------------ Suppose we have a binary counter such that the cost to increment the counter is equal to the number of bits that need to be flipped. We saw in class that if the counter begins at 0, and we increment the counter $n$ times, the amortized cost per increment is just O(1). Equivalently, the total cost to perform all n increments is O(n). Suppose that we want to be able to both increment and decrement the counter. - Show that even without making the counter go negative, it is possible for a sequence of n operations starting from 0, allowing both increments and decrements, to cost as much as Omega(log n) amortized per operation (i.e., Omega(n log n) total cost). - To fix the problem from part (a), consider the following redundant ternary number system. A number is represented by a sequence of trits, each of which is 0, +1, or -1. The value of the number t_{k-1}, ..., t_0 (where each t_i is a trit) is defined to be \sum_{i=0}^{k-1} t_i 2^i. The process of incrementing a ternary number is analogous to that operation on binary numbers. You add 1 to the low order trit. If the result is 2, then it is changed to 0, and a carry is propagated to the next trit. This process is repeated until no carry results. Decrementing a number is similar. You subtract 1 from the low order trit. If it becomes -2 then it is replaced by 0, and a borrow is propagated. Note that the same number may have multiple representations (e.g., (1)(0)(1) = (1)(1)(-1)). That's why this is called a redundant ternary number system. The cost of an increment or a decrement is the number of trits that change in the process. Starting from 0, a sequence of n increments and decrements are done. Give a clear, coherent proof that with this representation, the amortized cost per operation is O(1) (i.e., the total cost for the n operations is O(n)). Hint: think about a ``bank account'' or ``potential function'' argument. Penny Jumper -------------------- Consider a number line with a penny on every cell with index i<=0. You may 'jump' a penny over another penny in either direction, however the middle penny is then removed from the number line. How far can you get a penny to the right? Bonus: Expand this to a 2D grid, and let the initial pennies be on G[i][j] for all j<=0. What is the maximum height a penny can reach? Adversarial Quicksort -------------------- Give an lower bound argument for quicksort with fixed pivots. Hint: Be the adversary