Professional Documents
Culture Documents
1 Lecture
Asymptotic Notation
Merge Sort
Solving Recurrence
Review: Asymptotic Notation
Big O fact:
A polynomial of degree k is O(nk)
Review: Asymptotic Notation
Intuitively,
A = {10, 5, 7, 6, 1, 4, 8, 3, 2, 9};
Analysis of Merge Sort
Statement
MergeSort(A, left, right) {
Effort
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)
}
}
The expression:
c n 1
T ( n)
2T n cn n 1
2
is a recurrence.
Recurrence: an equation that describes a function in
terms of its value on smaller functions
Recurrence Examples
0 n0 0 n0
s ( n) s ( n)
c s (n 1) n 0 n s (n 1) n 0
n 1
c c n 1
T ( n) T ( n)
2T n c n 1 n
2 aT cn n 1
b
Solving Recurrences
Substitution method
Iteration method
Master method
Solving Recurrences
i
i n k 1
s(n k )
0 n0
s ( n)
n s (n 1) n 0
So far for n >= k we have
n
i
i n k 1
s(n k )
0 n0
s ( n)
n s (n 1) n 0
So far for n >= k we have
n
i
i n k 1
s(n k )
What if k = n?
0 n0
s ( n)
n s (n 1) n 0
So far
n
for n >= k we have
i
i n k 1
s(n k )
What if k = n?
n
n 1
n
i 1
i s ( 0) i 0 n
i 1 2
0 n0
s ( n)
n s (n 1) n 0
So far
n
for n >= k we have
i
i n k 1
s(n k )
What if k = n?
n
n 1
n
i 1
i s ( 0) i 0 n
i 1 2
Thus in general
n 1
s ( n) n
2
c n 1
T (n) aT n
cn n 1
b
T(n) =
aT(n/b) + cn
a(aT(n/b/b) + cn/b) + cn
a2T(n/b2) + cna/b + cn
a2T(n/b2) + cn(a/b + 1)
a2(aT(n/b2/b) + cn/b2) + cn(a/b + 1)
a3T(n/b3) + cn(a2/b2) + cn(a/b + 1)
a3T(n/b3) + cn(a2/b2 + a/b + 1)
akT(n/bk) + cn(ak-1/bk-1 + ak-2/bk-2 + + a2/b2 + a/b + 1)
c n 1
T (n) aT n
cn n 1
b
So we have
T(n) = akT(n/bk) + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)
For k = logb n
n = bk
T(n) = akT(1) + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)
= akc + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)
= cak + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)
= cnak /bk + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)
= cn(ak/bk + ... + a2/b2 + a/b + 1)
c n 1
T (n) aT n
cn n 1
b
So with k = logb n
T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)
What if a = b?
T(n) = cn(k + 1)
= cn(logb n + 1)
= (n log n)
c n 1
T (n) aT n
cn n 1
b
So with k = logb n
T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)
What if a < b?
c n 1
T (n) aT n
cn n 1
b
So with k = logb n
T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)
What if a < b?
Recall that (xk + xk-1 + + x + 1) = (xk+1 -1)/(x-1)
c n 1
T (n) aT n
cn n 1
b
So with k = logb n
T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)
What if a < b?
a k a k 1 a
k 1 1
a b k 1 1
a b
k
k
b b b a b 1
c n 1
T (n) aT n
cn n 1
b
So with k = logb n
T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)
What if a > b?
k
a a k 1
a
k 1 1
a b 1
k 1
a b
k
k
b b b
T(n) = cn (ak / bk)
a b 1
c n 1
T (n) aT n
cn n 1
b
So with k = logb n
T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)
What if a > b?
k
a a
k 1
a
1
a b 1
k 1
a b k
b k b k 1 b a b 1
T(n) = cn (ak / bk)
n ab
T (n) n log b n ab
n logb a
ab
The Master Theorem
if T(n) = aT(n/b) + f(n) then
n log b a
f ( n) O n log b a
0
T ( n) n log b a
log n f ( n) n log b a
c 1
f ( n)
f ( n) n log b a
AND
af (n / b) cf (n) for large n
Using The Master Method
T(n) = 9T(n/3) + n
a=9, b=3, f(n) = n
nlog a = nlog 9 = (n2)
b 3
T (n) n logb a when f (n) O n log b a
Thus the solution is T(n) = (n2)