Professional Documents
Culture Documents
Objective
• running time as recursive function
• solve recurrence for order of growth
• method: substitution
• method: iteration/recursion tree
• method: MASTER method
• prerequisite:
- mathematical induction, recursive definitions
- arithmetic manipulations, series, products
Pipeline
Problem
Algorithm
Running Time
Recursion
Solve Recursion
Running time
• will call it T(n) = number of computational steps
required to run the algorithm/program for input of
size n
• we are interested in order of growth, not exact
values
- for example T(n) = Θ(n2) means quadratic running time
- T(n) = O(n logn) means T(n) grows not faster than CONST*n*log(n)
• T(n) = 4T(n/3) + n
- 4 subproblems of size n/3 each, plus n steps to combine results
- that means there is a constant C and a starting value n0, such that
T(n)≤Cn3, for any n≥n0
- cant prove T(n)=O(n2) this way: need same constant steps 3-4-5
- maybe its not true? Guess O(n2) was too low?
- or maybe we dont have the right proof idea
• So we can prove
asymptotically correct ?
2
T(n)=O(n ), but is that
•
n
induction step T (n) = 4T ( ) + n
2
� n �2
≥ 4d +n
2
2 2
= dn + n ≥ dn
-
want k = log(n) ⇔ k = 1
2
iteration method good for
log(n)−1
� guess, but usually
= n 2i + 4log(n) T (1) unreliable for an exact
i=0
result
= n
2
2−1
log(n)
−1
+ n2 T (1) - use iteration for guess, and
substitution for proofs
• stopping condition
= n(n − 1) + n2 T (1) = Θ(n2 )
n n n n
T( ) T( ) T( ) T( ) +2n
2 2 2 2
n n n n n n n n n n n n n n n n
T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( )
4 4 4 4
+4n
4 4 4 4 4 4 4 4 4 4 4 4
Iteration method: visual tree
T (n)
+n
n n n n
T( ) T( ) T( ) T( ) +2n
2 2 2 2
n n n n n n n n n n n n n n n n
T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( )
4 4 4 4
+4n
4 4 4 4 4 4 4 4 4 4 4 4
2 5 2 5 2 2 n n n 2 n n n 2
= n + n +( ) n +T ( )+T ( )+( ) +3T ( )+3T ( )+3( ) +
16 16 16 32 8 32 64 16
n n n 2 n n n 2
3T ( ) + 3T ( ) + 3( ) + T ( ) + T( )+( )
64 128 32 128 256 64
Iteration Method : derivation
• T(n) = n2 + T(n/2) + T(n/4)
2 n n
T (n) = n + T ( ) + T ( )
2 4
2 n 2 n n n 2 n n
= n + ( ) + T( ) + T( ) + ( ) + T( ) + T( )
2 4 8 4 8 16
2 5 2 n n n
= n + n + T ( ) + 2T ( ) + T ( )
16 4 8 16
2 5 2 n 2 n n n 2 n n n 2
= n + n + ( ) + T ( ) + T ( ) + 2( ) + 2T ( ) + 2T ( ) + ( ) +
16 4 8 16 8 16 32 16
n n
T( ) + T( )
32 64
2 5 2 5 2 2 n n n n
= n + n + ( ) n + T ( ) + 3T ( ) + 3T ( ) + T ( )
16 16 8 16 32 64
5 2
2 5 2 2 n n n 2 n n n 2
= n + n +( ) n +T ( )+T ( )+( ) +3T ( )+3T ( )+3( ) +
16 16 16 32 8 32 64 16
n n n 2 n n n 2
3T ( ) + 3T ( ) + 3( ) + T ( ) + T( )+( )
64 128 32 128 256 64
2 5 2 5 2 2 5 3 2 n n n n
= n + n + ( ) n + ( ) n + T ( ) + 4T ( ) + 6T ( ) + 4T ( )+
16 16 16 16 32 64 128
n
T( )
256
Iteration Method : tree
T (n)
n
n T( )
T( ) 4
2
n n n n
T( ) T( ) T( ) T( )
4 8 8 16
n n n n n n n n
T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( )
8 16 16 32 16 32 32 64
Iteration Method : tree
+n2
T (n)
5 2
n + n
n T( ) 16
T( ) 4
2
� �2
5
n n n n + n2
T( ) T( ) T( ) T( ) 16
4 8 8 16
� �3
n n n n n n n n 5
T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) + n2
8 16 16 32 16 32 32 64 16
Iteration Method : tree
+n2
T (n)
5 2
n + n
n T( ) 16
T( ) 4
2
� �2
5
n n n n + n2
T( ) T( ) T( ) T( ) 16
4 8 8 16
� �3
n n n n n n n n 5
T( ) T( ) T( ) T( ) T( ) T( ) T( ) T( ) + n2
8 16 16 32 16 32 32 64 16
• work :
�∞
2 5 2 5 2 2 5 3 2 2 5 i 16 2
n + n + ( ) n + ( ) n + ... ≤ n ( ) = n = Θ(n2 )
16 16 16 16 11
• total Θ(n )
i=0
2
Master Theorem - simple
• CASE 3:
logb a+� af (n/b)
f (n) = Ω(n ); < 1 − � ⇒ T (n) = Θ(f (n))
f (n)
Master Theorem Example
• recurrence: T(n)=4T(n/2) 2
+Θ(n logn)
• Master Theorem: a=4; b=2; f(n)= n logn 2
• solution T(n)=Θ(n2log2n)
Master Theorem Example
• T(n)=4T(n/2) + 3
Θ(n )
• Master Theorem: a=4; b=2; f(n)=n 3