Lec10 Handout
Lec10 Handout
20 March 2023
Informal argument:
I log n tree levels
MSS(A)
Initialize all entries of n ◊ n array B to zero
for i = 1 to n do
sum = 0
for j = i to n do
B[i, j] = sum of A[i] ... A[j]
Return maximum value among all B[i, j]
M =11
˙ ˝¸ ˚
A = 4, ≠3, 5, ≠2, ≠1, 2, 6 , ≠2
¸ ˚˙ ˝ ¸˚˙˝
L=6 R=8
I Return max(L, R, M )
I How to find L, R? Recursively.
I Find M ? max. left + max. right from middle
max max
Ω≠≠≠≠≠≠|≠≠≠≠æ
4, -3, 5, -2, -1, 2, 6, -2
Divide and Conquer: Maximal Subsequence Sum
return max(L, R, M )
Recurrence
can also have more base cases: T (1) and T (2), etc.
T (n) Æ 2T (n/2) + cn
I What next?
Solving the Recurrence
T (n) Æ 2T
Ë
(n/2) + cn È
equation in n
Æ 2 2T (n/22 ) + c(n/2) + cn n æ n/2
= 22 T (n/22 )
Ë
+ 2cn È
Æ 22 2T (n/23 ) + c(n/22 ) + 2cn n æ n/4
= 23 T (n/23 ) + 3cn
Æ ...
T ( n2 ) T ( n2 ) +cn cn
T ( n4 ) T ( n4 ) +c n2 T ( n4 ) T ( n4 ) +c n2 cn + cn = 2cn
T(n
8
)T ( n
8
) +c n
4
T(n
8
)T ( n
8
)+c n
4
T(n
8
)T ( n
8
)+c n
4
T(n
8
)T ( n
8
) +c n
4 2cn + cn = 3cn
I Guess solution
I Prove by (strong) induction
T (n) Æ 2T (n/2) + cn
Strong induction:
Assume T (m) Æ k · m log m for all m < n
Prove statement for n: T (n) Æ k · n log n
T (n) Æ 2 · T (n/2) + cn
Æ 2 · k(n/2) log(n/2) + cn apply inductive hypothesis
= kn(log n ≠ 1) + cn
= kn log n + (c ≠ k)n Æ kn log n if k Ø c
T (n) Æ q · T (n/2) + cn
I What does the algorithm look like?
I q recursive calls to itself on problems of half the size
I O(n) work outside of the recursive calls
I Now: q = 1, q > 2
1 ≠ rd+1 rd+1 ≠ 1
1 + r + r2 + . . . + rd = =
1≠r r≠1
General Case
ÿ1
d≠1
q 2j
Work added at all levels: L(n) = cn (d = log2 n)
j=0
2
Work for base cases: B(n) = q d · T (1) = c1 q log2 n = c1 nlog2 q .
q = 1? Easy to see L(n) Æ 2cn = O(n) and B(n) = O(1).
General Case (q > 2)
ÿ1
d≠1
q 2j
Work added at all levels: L(n) = cn (d = log2 n)
j=0
2
Let r = q/2 > 1. Then
d≠1
ÿ rd ≠ 1 1 d 1 log2 n 1 log2 r
rj = Æ r≠1 r = r≠1 r = r≠1 n
j=0
r≠1
We’ve used: xlogb y = y logb x (take log: logb y logb x = logb x logb y)
d≠1
ÿ
log2 (q/2)
So rj = 1
r≠1 n = O(nlog2 q≠1 )
j=0
T (n) Æ q · T (n/2) + cn
1. q = 1: T (n) = O(n)
2. q = 2: T (n) = O(n log n)
3. q > 2: T (n) = O(nlog2 q )
Next time: Master Theorem (more general)