doc

advertisement
CSE 2320 Notes 4: Recurrences
(Last updated 2/12/16 4:40 AM)
Sedgewick 2.5
4.A. BOUNDING RECURRENCES ASYMPTOTICALLY
Goal: Take a function T ( n) that is defined recursively and find f ( n) such that T ( n) Î Q( f ( n)).
Need to establish both T ( n) Î O( f ( n)) and
(without using the limit theorems).
4.B. RECURRENCES, CONSTANTS, AND EVALUATING BY BRUTE EXPANSION
Consider the recurrence:
ænö
æ nö
T ( n) = Tç ÷ + e = Tç ÷ + Q(1)
è2ø
è 2ø
T (1) = d = Q(1)
[or use an arbitrary n0 , i.e. T ( n0 ) = d = Q(1)]
Suppose n = 2k:
T (1) = d
T (2) = T (1) + e = d + e
T ( 4) = T (2) + e = ( d + e) + e = d + 2e
T (8) = T ( 4 ) + e = ( d + 2e) + e = d + 3e
æ ö
æ
ö
Tç2 k ÷ = Tç2 k-1÷ + e = d + ke = d + elg n = Q(log n )
è ø
è
ø
Consider the recurrence:
æ nö
ænö
T ( n) = 2Tç ÷ + en = 2Tç ÷ + Q( n)
è 2ø
è2ø
T (1) = d = Q(1)
2
Suppose n = 2k:
T (1) = d
T (2) = 2T (1) + 2e = 2d + 2e
T ( 4 ) = 2T (2) + 4e = 2(2d + 2e) + 4e = 4d + 8e
T (8) = 2T ( 4) + 8e = 2( 4d + 8e) + 8e = 8d + 24e
T (16) = 2T (8) + 16e = 2(8d + 24e) + 16e = 16d + 64e
æ
ö
æ
ö
æ
ö
Tç n = 2 k ÷ = 2Tç 2 k-1÷ + 2 k e = 2ç 2 k-1d + 2 k-1( k -1)e÷ + 2 k e
è
ø
è
ø
è
ø
= 2 k d + 2 k ke = nd + en lg n = Q n log n
(
)
(see http://ranger.uta.edu/~weems/NOTES2320/notes04.c for examples of expansion)
Constants d and e do not usually matter . . .
4.C. THE SUBSTITUTION METHOD FOR BOUNDING RECURRENCES
Method
Guess bound (lower  and/or upper ) [On exams the guess will be given to you]
Verify by math induction (solve for constants for some function in asymptotic set)
i) Assume bounding hypothesis works for k < n
ii) Show bounding hypothesis works for n in exactly the same form as (i).
Refine bound
Example: Binary search recurrence (number of probes)
ænö
T ( n ) = Tç ÷ + 1
è2ø
O(log n)
Assume T ( k ) £ c lg k for k < n. (Note : log a n Î Q(logb n ))
æ nö
æ nö
Tç ÷ £ c lgç ÷ = c (lg n - lg2) = c lg n - c
è 2ø
è 2ø
ænö
T ( n ) = Tç ÷ + 1
è2ø
£ c lg n - c + 1
£ c lg n if c ³ 1
3
Assume T ( k ) ³ c lg k for k < n
æ nö
æ nö
Tç ÷ ³ c lgç ÷ = c (lg n - lg2) = c lg n - c
è 2ø
è 2ø
ænö
T ( n) = Tç ÷ + 1
è2ø
³ c lg n - c + 1
³ c lg n if 0 < c £ 1
æ nö
è 2ø
Example: T ( n) = 2Tç ÷ + dn
O( n log n)
Assume T ( k ) £ ck lg k for k < n
ænö
n æ nö
n
n
n
Tç ÷ £ c lgç ÷ = c (lg n - lg2) = c lg n - c
è2ø
2 è 2ø
2
2
2
æ nö
T ( n) = 2Tç ÷ + dn
è 2ø
æ n
nö
£ 2ç c lg n - c ÷ + dn
è 2
2ø
= cn lg n - cn + dn
£ cn lg n if c ³ d
Assume T ( k ) ³ ck lg k for k < n
ænö
n æ nö
n
n
n
Tç ÷ ³ c lgç ÷ = c (lg n - lg2) = c lg n - c
è2ø
2 è 2ø
2
2
2
æ nö
T ( n) = 2Tç ÷ + dn
è 2ø
æ n
nö
³ 2ç c lg n - c ÷ + dn
è 2
2ø
= cn lg n - cn + dn
³ cn lg n if 0 < c £ d
Why is there no basis step for the math induction in these two examples?
4
Example:
æ nö
T ( n) = 4Tç ÷ + n
è 2ø
æ ö
Try Oç n 3÷ and confirm by math induction:
è ø
Assume T ( k ) £ ck 3 for k < n
æ nö
n3
Tç ÷ £ c
è 2ø
8
æ nö
T ( n ) = 4Tç ÷ + n
è 2ø
n3
£ 4c
+n
8
c
= n3 + n
2
c
= cn 3 - n 3 + n
2
£ cn 3
c
- n 3 + n £ 0 if n is sufficiently large
2
æ ö
Improve bound to Oç n 2 ÷ and confirm:
è ø
Assume T ( k ) £ ck 2 for k < n
æ nö
n2
Tç ÷ £ c
è 2ø
4
æ nö
n2
T ( n) = 4Tç ÷ + n £ 4c
+ n = cn 2 + n STUCK!
è 2ø
4
5
as lower bound:
Assume T ( k ) ³ ck 3 for k < n
æ nö
n3
Tç ÷ ³ c
è 2ø
8
æ nö
T ( n ) = 4Tç ÷ + n
è 2ø
n3
³ 4c
+n
8
c
= n3 + n
2
c
c
= cn 3 - n 3 + n
- n 3 + n ³ 0?
2
2
3
³ cn DID NOT PROVE!!!
as lower bound:
Assume T ( k ) ³ ck 2 for k < n
æ nö
n2
Tç ÷ ³ c
è 2ø
4
æ nö
n2
T ( n) = 4Tç ÷ + n ³ 4c
+ n = cn2 + n ³ cn 2 for 0 < c
è 2ø
4
What’s going on . . . back to brute expansion
T (1) = d
T (2) = 4T (1) + 2 = 4d + 2
T ( 4) = 4T (2) + 4 = 4 ( 4d + 2) + 4 = 16d + 8 + 4 = 16d + 12
T (8) = 4T ( 4) + 8 = 4 (16d + 12) + 8 = 64d + 48 + 8 = 64d + 56
T (16) = 4T (8) + 16 = 4 (64d + 56) + 16 = 256d + 224 + 16 = 256d + 240
æ ö
Hypothesis : T ( n ) = dn 2 + n 2 - n = ( d + 1) n 2 - n = cn 2 - n = Qç n 2 ÷
è ø
6
æ ö
Oç n 2 ÷:
è ø
Assume T ( k ) £ ck 2 - k for k < n
æ nö
n2 n
Tç ÷ £ c
è 2ø
4
2
æ 2
ö
æ nö
n
n
T ( n) = 4Tç ÷ + n £ 4ççc
- ÷÷ + n = cn 2 - 2n + n = cn2 - n
è 2ø
2ø
è 4
:
[This bound was already proven.]
Assume T ( k ) ³ ck 2 - k for k < n
æ nö
n2 n
Tç ÷ ³ c
è 2ø
4
2
æ 2
ö
æ nö
n
n
T ( n) = 4Tç ÷ + n ³ 4ççc
- ÷÷ + n = cn 2 - 2n + n = cn2 - n
è 2ø
2ø
è 4
Example:
T ( n) = T
( n ) +1
O(log n):
Assume T ( k ) £ c lg k for k < n
( n ) £ c lg
lg n
2
lg n
lg n
T ( n) = T n + 1 £ c
+ 1 = c lg n - c
+1
2
2
£ c lg n for sufficiently large n
T
( )
n =c
7
O(loglog n):
Assume T ( k ) £ c lglg k for k < n. (Note : log a log a n Î Q(logb logb n ))
( n ) £ c lglg n = c lg lg2n = c lglg n - c
T ( n) = T ( n ) + 1 £ c lglg n - c + 1
T
£ c lglg n if c ³ 1
Achieving Q(loglog n) seems irrelevant, but . . .
2 n is to n as n is to log n . . . and as log n is to loglog n.
:
Assume T ( k ) ³ c lglg k for k < n
( n ) ³ c lglg n = c lg lg2n = c lglg n - c
T ( n) = T ( n ) + 1 ³ c lglg n - c + 1
T
³ c lglg n if 0 < c £ 1
Example: L. Adleman et.al., “Running Time and Program Size for Self-assembled Squares”, p. 745
(Lemma 3.4)”, http://dl.acm.org.ezproxy.uta.edu/citation.cfm?doid=380752.380881
( 2) + Q(log n), and the solution to this recurrence is L(n) = Q(n)”.
“Therefore, L( n) = 2L n
æ nö
L( n) = 2Lç ÷ + lg n is Q( n)
è 2ø
O( n) :
L( k ) £ ck for k < n
æ nö
n
Lç ÷ £ c
è 2ø
2
æ nö
n
L( n) = 2Lç ÷ + lg n £ 2c + lg n = cn + lg n stuck!
è 2ø
2
(aside: “An Algorithmic View of the Universe” at http://amturing.acm.org/acm_tcc_webcasts.cfm )
8
:
L( k ) ³ ck for k < n
ænö
n
Lç ÷ ³ c
è2ø
2
æ nö
n
L( n) = 2Lç ÷ + lg n ³ 2c + lg n = cn + lg n ³ cn
è 2ø
2
More brute expansion:
L(1) = d
L(2) = 2L(1) + 1 = 2d + 1
L( 4) = 2L(2) + 2 = 2(2d + 1) + 2 = 4d + 2 + 2 = 4d + 4
L(8) = 2L( 4) + 3 = 2( 4d + 4) + 3 = 8d + 8 + 3 = 8d + 11
L(16) = 2L(8) + 4 = 2(8d + 11) + 4 = 16d + 22 + 4 = 16d + 26
L( 32) = 2L(16) + 5 = 2(16d + 26) + 5 = 32d + 52 + 5 = 32d + 57
L(64 ) = 2L( 32) + 6 = 2( 32d + 57) + 6 = 64d + 114 + 6 = 64d + 120
Hypothesis : L( n ) = nd + 2n - lg n - 2 = ( d + 2) n - lg n - 2 = cn - lg n - 2 = Q( n )
New try at O( n) :
L( k ) £ ck - lg k - 2 for k < n
ænö
n
n
Lç ÷ £ c - lg - 2
è2ø
2
2
n
n
= c - lg n + 1- 2 = c - lg n -1
2
2
æ nö
æ n
ö
L( n ) = 2Lç ÷ + lg n £ 2ç c - lg n -1÷ + lg n
è 2ø
è 2
ø
= cn - 2lg n - 2 + lg n = cn - lg n - 2
9
æ nö
è 2ø
Example: T ( n) = 2Tç ÷ + n
3
æ ö
Oç n 3÷:
è ø
Assume T ( k ) £ ck 3 for k < n
ænö
n3
Tç ÷ £ c
è2ø
8
æ nö
n3
n3
T ( n) = 2Tç ÷ + n 3 £ 2c
+ n3 = c
+ n3
è 2ø
8
4
3
= cn 3 - cn 3 + n 3
4
4
£ cn 3 if c ³
3
:
Assume T ( k ) ³ ck 3 for k < n
ænö
n3
Tç ÷ ³ c
è2ø
8
æ nö
n3
n3
T ( n) = 2Tç ÷ + n 3 ³ 2c
+ n3 = c
+ n3
è 2ø
8
4
3
= cn 3 - cn 3 + n 3
4
4
³ cn 3 if 0 < c £
3
æ nö
Example: T ( n) = 3Tç ÷ + 2
è 3ø
O( n) :
Assume T ( k ) £ ck for k < n
æ n ö cn
Tç ÷ £
è 3ø 3
æ nö
cn
T ( n) = 3Tç ÷ + 2 £ 3 + 2 = cn + 2 stuck!
è 3ø
3
10
:
Assume T ( k ) ³ ck for k < n
æ n ö cn
Tç ÷ ³
è 3ø 3
ænö
cn
T ( n) = 3Tç ÷ + 2 ³ 3 + 2 = cn + 2 ³ cn
è 3ø
3
Examine a few cases:
T (1) = d
T ( 3) = 3T (1) + 2 = 3d + 2
T (9) = 3T ( 3) + 2 = 3(3d + 2) + 2 = 9d + 6 + 2 = 9d + 8
T (27) = 3T (9) + 2 = 3(9d + 8) + 2 = 27d + 24 + 2 = 27d + 26
Hypothesis : T ( n) = nd + n -1 = ( d + 1) n -1 = cn -1 = Q( n )
New try for O( n) :
Assume T ( k ) £ ck -1 for k < n
æ n ö cn
Tç ÷ £
-1
è 3ø 3
ænö
æ cn ö
T ( n) = 3Tç ÷ + 2 £ 3ç -1÷ + 2 = cn - 3 + 2 = cn -1
è 3ø
è3 ø
4.D. RECURSION TREE METHOD
Concepts
Draw tree – either for a particular n or for general case
Fan-out
Sub-problem sizes
Number of levels
Number of leaves
(Number of parents-of-leaves)
Assign (non-recursive) contribution of a node (sub-problem) in each level
Compute total (non-recursive) contribution across each level
Usually complete by evaluating a summation – Go directly for  bound, not separate  and .
11
æ nö
è 2ø
Example: T ( n) = 4Tç ÷ + n
T(n)Þn
T(n/2)Þn/2
T(n/4)Þn/4
lg n + 1
levels
T(n/8)Þn/8
T(n/16)Þn/16
.
.
.
T(2)=T(n/2lg n-1)Þ2
T(1)Þ1
Note use of the identity
n
4n/2=2n
16n/4=4n
64n/8=8n
256n/16=16n
.
.
.
4lg n-1•n/2 lg n-1 =2lg n-1•n
4lg n =nlg 4 =n2
logad = log ab.
d
b
Using definite geometric sum formula:
lg n-1
2lg n -1 2
n å 2k + n2 = n
+n
2
-1
k=0
= n n -1 + n 2
(
)
æ ö
= n 2 - n + n 2 = Qç n 2 ÷
è ø
t
x t+1 -1
Using å x k =
x -1
k=0
x ¹1
12
æ nö
è 2ø
Example: T ( n) = 2Tç ÷ + n
3
T(n)Þn3
T(n/2)Þn3/8
T(n/4)Þn3/64
lg n + 1
levels
T(n/8)Þn3/512
T(n/16)Þn3/4096
.
.
.
T(2)=T(n/2lg n-1)Þ8
T(1)Þ1
n3
2n3/8=n3/4
4n3/64=n3/16
8n3/512=n3/64
16n3/4096=n3/256
.
.
.
lg
n-1
lg
n-1
2
(n/2
)3=n3/4lg n-1
2lg n=n
Using indefinite geometric sum formula:
lg n-1 1
¥ 1
3
n å
+ n £ n3 å
+n
k
k
k=0 4
k=0 4
= n3
1
+n
1
14
4
= n 3 + n = O(n 3)
3
¥
1
F rom å x k =
1- x
k=0
0 < x <1
13
Using definite geometric sum formula:
()
1 lg n -1
lg n-1 1
t
x t+1 -1
n3 å
+ n = n3 4
+n
U sing å x k =
k
1 -1
x -1
k=0 4
k=0
4
n -2 -1
1- n -2
4 æ
1ö
= n3
+ n = n3
+ n = n 3ç1- ÷ + n
3
3 è n2 ø
-3
4
4
æ ö
= Qç n 3÷
è ø
æ nö
Example: T ( n) = 9Tç ÷ + 2n 2
è 3ø
æ
ö
T ( n) = 2n2 log 3 n + n2 = Qç n 2 log n÷
è
ø
x ¹1
Download