Lecture 33 CSE 331 Nov 17, 2010
Online office hours Alex will host the office hours
Next Monday’s lecture I’ll be out of town Jeff will teach the lecture
Feedback Forms Link for the survey on the blog
Divide and Conquer Divide up the problem into at least two sub-problems Recursively solve the sub-problems “Patch up” the solutions to the sub-problems for the final solution Solve all sub-problems: Mergesort Solve some sub-problems: Multiplication Solve stronger sub-problems: Inversions
Integer Multiplication Input: a = (a n-1,..,a 0 ) and b = (b n-1,…,b 0 ) Output: c = a x b a = 1101 b = 1001 c = a = a 1 2 [n/2] + a 0 a 1 = 11 and a 0 = 01 b = b 1 2 [n/2] + b 0 b 1 = 10 and b 0 = 01
First attempt Mult over n bits Multiplication over n/2 bit inputs Shift by O(n) bits Adding O(n) bit numbers T(n) ≤ 4T(n/2) + cn T(1) ≤ c T(n) is O(n 2 )
The key identity
The final algorithm Input: a = (a n-1,..,a 0 ) and b = (b n-1,…,b 0 ) If n = 1 return a 0 b 0 a 1 = a n-1,…,a [n/2] and a 0 = a [n/2]-1,…, a 0 Compute b 1 and b 0 from b Mult (a, b) Let p = Mult (x, y), D = Mult (a 1, b 1 ), E = Mult (a 0, b 0 ) T(1) ≤ c T(n) ≤ 3T(n/2) + cn O(n log 3 ) = O(n 1.59 ) run time O(n log 3 ) = O(n 1.59 ) run time
(Old) Reading Assignment Sec 5.2 of [KT]
Rankings
How close are two rankings?
Today’s agenda Formal problem: Counting inversions Divide and Conquer algorithm