Download presentation
Presentation is loading. Please wait.
Published byBethany Richard Modified over 9 years ago
1
CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem
2
Merge Sort MergeSort(A, left, right) { if (left < right) { mid = floor((left + right) / 2); MergeSort(A, left, mid); MergeSort(A, mid+1, right); Merge(A, left, mid, right); } // Merge() takes two sorted subarrays of A and // merges them into a single sorted subarray of A // (how long should this take?)
3
Merge Sort: Example Show MergeSort() running on the array A = {10, 5, 7, 6, 1, 4, 8, 3, 2, 9};
4
Analysis of Merge Sort StatementEffort l So T(n) = (1) when n = 1, and 2T(n/2) + (n) when n > 1 l So what (more succinctly) is T(n)? MergeSort(A, left, right) {T(n) if (left < right) { (1) mid = floor((left + right) / 2); (1) MergeSort(A, left, mid);T(n/2) MergeSort(A, mid+1, right);T(n/2) Merge(A, left, mid, right); (n) }
5
Recurrences l The expression: is a recurrence. n Recurrence: an equation that describes a function in terms of its value on smaller functions
6
Recurrence Examples
7
Solving Recurrences l Substitution method l Iteration method l Master method
8
Solving Recurrences l The substitution method n A.k.a. the “making a good guess method” n Guess the form of the answer, then use induction to find the constants and show that solution works n This and several other methods are usually done in discrete math so we will skip them at this time.
9
Solving Recurrences l Another option is what the book calls the “iteration method” n Expand the recurrence n Work some algebra to express as a summation n Evaluate the summation l We will show several examples
10
l s(n) = c + s(n-1) c + c + s(n-2) 2c + s(n-2) 2c + c + s(n-3) 3c + s(n-3) … kc + s(n-k) = ck + s(n-k)
11
l So far for n >= k we have n s(n) = ck + s(n-k) l What if k = n? n s(n) = cn + s(0) = cn
12
l So far for n >= k we have n s(n) = ck + s(n-k) l What if k = n? n s(n) = cn + s(0) = cn l So l Thus in general n s(n) = cn
13
l s(n) =n + s(n-1) =n + n-1 + s(n-2) =n + n-1 + n-2 + s(n-3) =n + n-1 + n-2 + n-3 + s(n-4) =…=… = n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k)
14
l s(n) =n + s(n-1) =n + n-1 + s(n-2) =n + n-1 + n-2 + s(n-3) =n + n-1 + n-2 + n-3 + s(n-4) =… = n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k) =
15
l So far for n >= k we have
16
l What if k = n?
17
l So far for n >= k we have l What if k = n?
18
l So far for n >= k we have l What if k = n? l Thus in general
19
l T(n) = 2T(n/2) + c 2(2T(n/2/2) + c) + c 2 2 T(n/2 2 ) + 2c + c 2 2 (2T(n/2 2 /2) + c) + 3c 2 3 T(n/2 3 ) + 4c + 3c 2 3 T(n/2 3 ) + 7c 2 3 (2T(n/2 3 /2) + c) + 7c 2 4 T(n/2 4 ) + 15c … 2 k T(n/2 k ) + (2 k - 1)c
20
l So far for n > 2k we have n T(n) = 2 k T(n/2 k ) + (2 k - 1)c l What if k = lg n? n T(n) = 2 lg n T(n/2 lg n ) + (2 lg n - 1)c = n T(n/n) + (n - 1)c = n T(1) + (n-1)c = nc + (n-1)c = (2n - 1)c
21
l T(n) = aT(n/b) + cn a(aT(n/b/b) + cn/b) + cn a 2 T(n/b 2 ) + cna/b + cn a 2 T(n/b 2 ) + cn(a/b + 1) a 2 (aT(n/b 2 /b) + cn/b 2 ) + cn(a/b + 1) a 3 T(n/b 3 ) + cn(a 2 /b 2 ) + cn(a/b + 1) a 3 T(n/b 3 ) + cn(a 2 /b 2 + a/b + 1) … a k T(n/b k ) + cn(a k-1 /b k-1 + a k-2 /b k-2 + … + a 2 /b 2 + a/b + 1)
22
l So we have n T(n) = a k T(n/b k ) + cn(a k-1 /b k-1 +... + a 2 /b 2 + a/b + 1) l For k = log b n n n = b k n T(n)= a k T(1) + cn(a k-1 /b k-1 +... + a 2 /b 2 + a/b + 1) = a k c + cn(a k-1 /b k-1 +... + a 2 /b 2 + a/b + 1) = ca k + cn(a k-1 /b k-1 +... + a 2 /b 2 + a/b + 1) = cna k /b k + cn(a k-1 /b k-1 +... + a 2 /b 2 + a/b + 1) = cn(a k /b k +... + a 2 /b 2 + a/b + 1)
23
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a = b? n T(n)= cn(k + 1) = cn(log b n + 1) = (n log n)
24
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a < b?
25
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a < b? n Recall that (x k + x k-1 + … + x + 1) = (x k+1 -1)/(x-1)
26
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a < b? n Recall that (x k + x k-1 + … + x + 1) = (x k+1 -1)/(x-1) n So:
27
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a < b? n Recall that (x k + x k-1 + … + x + 1) = (x k+1 -1)/(x-1) n So: n T(n) = cn · (1) = (n)
28
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a > b?
29
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a > b?
30
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a > b? n T(n) = cn · (a k / b k )
31
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a > b? n T(n) = cn · (a k / b k ) = cn · (a log n / b log n ) = cn · (a log n / n)
32
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a > b? n T(n) = cn · (a k / b k ) = cn · (a log n / b log n ) = cn · (a log n / n) recall logarithm fact: a log n = n log a
33
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a > b? n T(n) = cn · (a k / b k ) = cn · (a log n / b log n ) = cn · (a log n / n) recall logarithm fact: a log n = n log a = cn · (n log a / n) = (cn · n log a / n)
34
l So with k = log b n n T(n) = cn(a k /b k +... + a 2 /b 2 + a/b + 1) l What if a > b? n T(n) = cn · (a k / b k ) = cn · (a log n / b log n ) = cn · (a log n / n) recall logarithm fact: a log n = n log a = cn · (n log a / n) = (cn · n log a / n) = (n log a )
35
l So… A Simple form of the Master Method
36
Using The Master Method l T(n) = 9T(n/3) + n n a=9, b=3, c = 1 n Now 9 > 3 1 n Thus the solution is T(n) = (n 2 ) l T(n) = 2T(n/2) + n n a=2, b=2, c = 1 n Now 2= 2 1 n Thus the solution is T(n) = (n log n)
37
Homework Go to my web page and download homework 2. this is a collection of recurrence relations that you will apply the master method and the iteration method to.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.