DOC PREVIEW
MSU CSE 830 - Lecture 7: Divide and Conquer

This preview shows page 1-2-3-4-5-6 out of 17 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 17 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 17 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 17 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 17 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 17 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 17 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 17 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Divide-and-ConquerMatrix MultiplicationTraditional ApproachExtending to n by n matricesStrassen’s ApproachSlide 6ObservationsMedian ProblemQuicksort ApproachProbabilistic AnalysisCases where (i..j) do not contain kCase where (i..j) contains kBest case, Worst-caseDeterministic O(n) approachGuarantees on the pivot elementAnalysis of running timeSolving recurrence relationDivide-and-Conquer•Matrix multiplication and Strassen’s algorithm•Median Problem–In general finding the kth largest element of an unsorted list of numbers using comparisonsMatrix Multiplication•How many operations are needed to multiply two 2 by 2 matrices?[[r st u[[a bc d[[e fg h=Traditional Approach•r = ae + bg•s = af + bh•t = ce + dg•u = cf + dh•8 multiplications and 4 additions[[r st u[[a bc d[[e fg h=Extending to n by n matrices[[R ST U[[A BC D[[E FG H=•Each letter represents an n/2 by n/2 matrix•We can use the breakdown to form a divide and conquer algorithm•R = AE + BG•S = AF + BH•T = CE + DG•U = CF + DH•8 multiplications of n/2 by n/2 matrices•T(n) = 8 T(n/2) + (n2)•T(n) = (n3)Strassen’s Approach•p1 = a(f – h)•p2 = (a+b)h•p3 = (c+d)e•p4 = d(g-e)•p5 = (a+d)(e + h)•p6 = (b-d)(g+h)•p7 = (a-c)(e+f)•r = p5 + p4 - p2 + p6•s = p1 + p2•t = p3 + p4•u = p5 + p1 – p3 – p7•7 multiplications•18 additions[[r st u[[a bc d[[e fg h=Extending to n by n matrices[[R ST U[[A BC D[[E FG H=•Each letter represents an n/2 by n/2 matrix•We can use the breakdown to form a divide and conquer algorithm•7 multiplications of n/2 by n/2 matrices•18 additions of n/2 by n/2 matrices•T(n) = 7 T(n/2) + (n2)•T(n) = (nlg 7)Observations•Comparison: n= 70–Direct multiplication: 703 = 343,000–Strassen: 70lg 7 is approximately 150,000–Crossover point typically around n = 20 •Hopcroft and Kerr have shown 7 multiplications are necessary to multiply 2 by 2 matrices–But we can do better with larger matrices•Current best is O(n2.376) by Coppersmith and Winograd, but it is not practical•Best lower bound is (n2) (since there are n2 entries)•Matrix multiplication can be used in some graph algorithms as a fundamental step, so theoretical improvements in the efficiency of this operation can lead to theoretical improvements in those algorithmsMedian Problem•How quickly can we find the median (or in general the kth largest element) of an unsorted list of numbers?•Two approaches–Quicksort partition algorithm expected  (n) time but (n2) time in the worst-case–Deterministic (n) time in the worst-caseQuicksort Approach•int Select(int A[], k, low, high)–Choose a pivot item–Compare all items to this pivot element–If pivot is kth item, return pivot–Else update low, high, k and recurse on partition that contains correct itemProbabilistic Analysis•Assume each of n! permutations is equally likely•What is probability ith largest item is compared to jth largest item?–If k is contained in (i..j), then 2/(j-i+1)–If k <= i, then 2/(j-k+1)–If k >= j, then 2/(k-i+1)Cases where (i..j) do not contain k•k>=j:(i=1 to k-1)j = i+1 to k 2/(k-i+1) = i=1 to k-1 (k-i) 2/(k-i+1)–= i=1 to k-1 2i/(i+1) [replace k-i with i]–= 2 i=1 to k-1 i/(i+1) –<= 2(k-1)•k<=i:(j=k+1 to n)i = k to j-1 2/(j-k+1) = j=k+1 to n (j-k) 2/(j-k+1)–= j = 1 to n-k 2j/(j+1) [replace j-k with j and change bounds]–= 2 j=1 to n-k j/(j+1) –<= 2(n-k)•Total for both cases is <= 2n-2Case where (i..j) contains k•At most 1 interval of size 3 contains k–i=k-1, j=k+1•At most 2 intervals of size 4 contain k–i=k-1, j=k+2 and i=k-2, j= k+1•In general, at most q-2 intervals of size q contain k•Thus we get (q=3 to n) (q-2)/q <= n-2•Summing together all cases we see the expected number of comparisons is less than 3nBest case, Worst-case•Best case running time?•What happens in the worst-case?–Pivot element chosen is always what?–This leads to comparing all possible pairs–This leads to (n2) comparisonsDeterministic O(n) approach•Need to guarantee a good pivot element while doing O(n) work to find the pivot element•int Select(int A[], k, low, high)–Choosing pivot element•Divide into groups of 5•For each group of 5, find that group’s median•Find the median of the medians–Compare remaining items directly to median to identify its current exact placement–Update low, high, k and recurse on partition that contains correct itemGuarantees on the pivot element•Median of medians is guaranteed to be smaller than all the red colored items–Why?–How many red items are there?–½ (n/5) * 3 = 3n/10•Likewise, median of medians is guaranteed to be larger than the 3n/10 blue colored items•Thus median of medians is in the range 3n/10 to 7n/10Analysis of running time•int Select(int A[], k, low, high)–Choosing pivot element•For each group of 5, find that group’s median•Find the median of the medians–Compare remaining items directly to median–Recurse on correct partition•Analysis–Choosing pivot element•c1 n/5–c1 for median of 5•Recurse on problem of size n/5–n comparisons–Recurse on problem of size 7n/10•T(n) = T(7n/10) + T(n/5) + O(n)Solving recurrence relation•T(n) = T(7n/10) + T(n/5) + O(n)–Key observation: 7/10 + 1/5 = 9/10 < 1•Prove T(n) <= cn for some constant n by induction on n•T(n) = 7cn/10 + cn/5 + dn• = 9cn/10 + dn•Need 9cn/10 + dn <= cn•Thus c/10 >= d  c >=


View Full Document

MSU CSE 830 - Lecture 7: Divide and Conquer

Download Lecture 7: Divide and Conquer
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture 7: Divide and Conquer and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 7: Divide and Conquer 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?