cs4311 design and analysis of algorithmswkhon/algo08-lectures/lecture3.pdf · recursion tree method...
TRANSCRIPT
![Page 1: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/1.jpg)
1
CS4311Design and Analysis of
Algorithms
Lecture 3: Recurrences
![Page 2: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/2.jpg)
2
•Introduce some ways of solvingrecurrences–Substitution Method (If we know the answer)–Recursion Tree Method (Very useful !)–Master Theorem (Save our effort)
About this lecture
![Page 3: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/3.jpg)
3
How to solve this?T(n) = 2T(bn/2c) + n, with T(1) = 1
1. Make a guess (say, T(n) = O(f(n)) ), and2. Show it by induction
• For example, to show upper bound, we findconstants c and n0 such that T(n) · c f(n)
for n = n0, n0+1, n0+2, …
Substitution Method(if we know the answer)
![Page 4: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/4.jpg)
4
How to solve this?T(n) = 2T(bn/2c) + n, with T(1) = 1
1. Make a guess (T(n) = O(n log n)), and2. Show it by induction
• Find c = 2, and n0 = 2• Base Case: By the recurrence, T(2) = 3, T(3)
= 5. Both cases satisfy T(n) · cn log n
• Induction Case ?
Substitution Method(if we know the answer)
![Page 5: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/5.jpg)
5
• Induction Case:Assume the guess is true for all n = 2,3,…,kFor n = k+1, we have:
T(n) = 2T(bn/2c) + n
· 2cbn/2c log bn/2c+ n
· cn log (n/2) + n
= cn log n –cn + n · cn log n
Substitution Method(if we know the answer)
Inductioncase is true
![Page 6: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/6.jpg)
6
Q. How did we know the value of c and n0 ?A. If induction works, the induction case
must be correct c ¸ 1
Then, we find that by setting c = 2, ourguess is correct as soon as n0 = 2Alternatively, we can also use c = 1.3Then, we just need a larger n0 = 4(What will be the new base cases? Why?)
Substitution Method(if we know the answer)
![Page 7: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/7.jpg)
7
How to solve this?T(n) = T(bn/2c) + T(dn/2e) + n, T(1) = 1
1. Make a guess (T(n) = O(n)), and
2. Show T(n) · cn by induction
– What will happen in induction case?
Substitution Method(New Challenge)
![Page 8: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/8.jpg)
8
Induction Case:(assume guess is true for some base cases)
T(n) = T(bn/2c) + T(dn/2e) + 1
· cbn/2c + cdn/2e + 1
= cn + 1
Substitution Method(New Challenge)
This term is notwhat we want …
![Page 9: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/9.jpg)
9
The 1st attempt was not working because ourguess for T(n) was a bit large …
2nd Attempt:(Refine our guess by subtracting lower order term)1. Make a guess ( T(n) = O(n) ), and
2. Try to show T(n) · cn - b by induction
In the induction case, what will happen?
Substitution Method(New Challenge)
![Page 10: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/10.jpg)
10
Induction Case:T(n) = T(bn/2c) + T(dn/2e) + 1
· cbn/2c - b + cdn/2e - b + 1
· cn - b
Substitution Method(New Challenge)
We get the desiredterm (when b 1)
It remains to find c and n0, and prove thebase case(s), which is relatively easy
![Page 11: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/11.jpg)
11
How to solve this?
T(n) = 2T( ) + log n ?
Substitution Method(New Challenge 2)
n
Hint: Change variable: Set m = log n
![Page 12: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/12.jpg)
12
Substitution Method(New Challenge 2)
Set m = log n , we get
T(2m) = 2T(2m/2) + m
Next, set S(m) = T(2m)
S(m) = 2S(m/2) + m
We solve S(m) = O(m log m) T(n) = O(log n log log n)
![Page 13: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/13.jpg)
13
How to solve this?T(n) = 2T(n/2) + n2, with T(1) = 1
Recursion Tree Method( Nothing Special…Very Useful ! )
![Page 14: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/14.jpg)
14
Expanding the terms, we get:
T(n) = n2 + 2T(n/2)= n2 + 2n2/4 + 4T(n/4)= n + 2n2/4 + 4n2/16 + 8T(n/8)= …
=k=0 to log n–1 (1/2)k n2 + 2log n T(1)
= (n2) + (n2) = (n2)
Recursion Tree Method( Nothing Special…Very Useful ! )
![Page 15: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/15.jpg)
15
We can express the previous recurrence by:
Recursion Tree Method( Recursion Tree View )
![Page 16: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/16.jpg)
16
Further expressing gives us:
This term isfrom T(n/2)
![Page 17: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/17.jpg)
17
How to solve this?T(n) = T(n/3) + T(2n/3) + n, with T(1) = 1
What will be the recursion tree view?
Recursion Tree Method( New Challenge )
![Page 18: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/18.jpg)
18
The corresponding recursion tree view is:
![Page 19: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/19.jpg)
19
When the recurrence is in a special form, wecan apply the Master Theorem to solvethe recurrence immediately
The Master Theorem has 3 cases …
Master Method( Save our effort )
![Page 20: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/20.jpg)
20
Theorem: (Case 1: Very Small f(n) )
If f(n) = O(nlogb a - ) for some constant 0
then T(n) = (nlogb a)
Master Theorem
Let T(n) = aT(n/b) + f(n)with a 1 and b 1 are constants.
![Page 21: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/21.jpg)
21
Theorem: (Case 2: Moderate f(n) )
If f(n) = (nlogb a),
then T(n) = (nlogb a log n)
Theorem: (Case 3: Very large f(n) )
If (i) f(n) = (nlogb a + ) for some constant 0
and (ii) a f(n/b) c f(n) for some constant c 1,all sufficiently large n
then T(n) = (f(n))
![Page 22: CS4311 Design and Analysis of Algorithmswkhon/algo08-lectures/lecture3.pdf · Recursion Tree Method ( Nothing Special…Very Useful ! ) 15 We can express the previous recurrence by:](https://reader034.vdocument.in/reader034/viewer/2022051604/600393d5fe10d218c24abebf/html5/thumbnails/22.jpg)
22
Master Theorem (Exercises)
1. Solve T(n) = 9T(n/3) + n
2. Solve T(n) = 9T(n/3) + n2
3. Solve T(n) = 9T(n/3) + n3
4. How about this?T(n) = 9T(n/3) + n log n ?