### n - UCSB Computer Science

```The Growth of Functions:
Selected Exercises
Goals
• Introduce big-O & big-Omega
• Show how to estimate the size of functions
using this notation.
Preface
You may use without proof that: The functions below
increase asymptotically from top to bottom:
• f( n ) = k, for some constant k.
• f( n ) = logk n, for all k  N & any constant log base ≥ 2.
• f( n ) = nq, for all q  Q+
• f( n ) = kn < (k+1)n, for all k  N
• f( n ) = n!
2
Preface continued
• The book says that f(n) is O( g( n ) ) when
k c n ( n > k  | f( n ) |  c | g( n ) | )
• In computational complexity, we deal exclusively with
functions whose domains & ranges are positive.
• We thus may simplify the definition of O( ) as follows:
k c n > k f( n )  c g( n ).
• You are not responsible for knowing o().
This is different from O().
3
Exercise 10
Defn: f( n ) is O( g( n ) ) if k c n > k f( n )  cg( n ).
Show that:
1) n3 is O( n4 )
2) n4 is not O( n3 ).
4
Exercise10: Solution
Defn: f( n ) is O( g( n ) ) when k c n > k f( n )  cg( n ).
Show that:
1) n3 is O( n4 )
2) n4 is not O( n3 ).
1)
For n ≥ 1 & c = 1: n3  1n4  1  n.
2)
1)
Assume k c n > k n4  cn3.
2)
k c n > k n4  cn3 
k c n > k n  c ), which is false. ( Divide both sides by n3 )
3) Therefore, n4 is not O( n3 ).
5
Theorems You Can Use
Thm 1: Let f(x) = anxn + an-1xn-1 + … + a1x + a0,
where the ai are real. Then, f(x) is O( xn ).
Let
f1(x) is O (g1(x) )
& f2(x) is O( g2(x) ).
Thm 2: (f1 + f2)(x) is O( max( g1(x), g2(x) ) )
Thm 3: (f1 f2)(x) is O( (g1g2)(x) ).
6
Exercise 20
Give a big-O estimate for the functions:
(Use a simple g of smallest order.)
a) f( n ) = ( n3 + n2logn )( logn + 1 ) + ( 17logn + 19 )( n3 + 2 ).
7
Exercise 20 a) Solution
Give a big-O estimate for the functions:
(Use a simple g of smallest order.)
a) f( n ) = ( n3 + n2logn )( logn + 1 ) + ( 17logn + 19 )( n3 + 2 ).
Using our theorems,
( n3 + n2logn )( logn + 1 ) + ( 17logn + 19 )( n3 + 2 )
Is O( ( n3 )( logn ) + ( 17logn )( n3 ) )
Is O( ( n3 logn ) + ( n3 17logn )
Is O( ( n3 logn ).
8
Exercise 20 b)
b) f( n ) = ( 2n + n2 )( n3 + 3n ).
9
Exercise 20 b) Solution
b) f( n ) = ( 2n + n2 )( n3 + 3n ).
Using our theorems,
f( n ) = ( 2n + n2 )( n3 + 3n ) is O( ( 2n )( 3n ) )
which is O( 2n3n ) which is O( 6n ).
10
Exercise 20 c)
c) f( n ) = ( nn + n2n + 5n )( n! + 5n )
11
Exercise 20 c) Solution
Defn: f( n ) is O( g( n ) ) when k c n > k f( n )  cg( n ).
c) f( n ) = ( nn + n2n + 5n )( n! + 5n )
Using our theorems, f( n ) is O( ( nn + n2n )( n! ) )
In nn + n2n, which is the fastest growing term?
Claim: n2n is O ( nn ) :
1.
n ≥ 2  2n-1  nn-1.
2.
n ≥ 2  n2n  2nn. (Multiply both sides of 1. by 2n.)
Thus, f( n ) is O( nnn! ).
12
Exercise 30
Defn: f( n ) is O( g( n ) ) when k c n > k f( n )  cg( n ).
Defn. f( n ) is Ω( g( n ) ) when k c > 0 n > k f( n ) ≥ cg( n ).
What does it mean for f( n ) to be Ω( 1 )?
Hint: graph f( n ).
13
Exercise 30 Solution
Defn. f( n ) is Ω( g( n ) ) when k c > 0 n > k f( n ) ≥ c g( n ).
What does it mean for a function to be Ω( 1 )?
• From the definition, f( n ) is Ω( 1 ) when
k c > 0 n > k f( n ) ≥ c.
• f( n ) ≥ c > 0, for sufficiently large n.
f( n ) = 1/n is Ω( 1 ). True or false?
14
Generalizing the definitions
Defn: f( n ) is O( g( n ) ) when k c n > k f( n )  cg( n ).
What is a good definition of
f( n, m ) is O( g( n, m ) )?
15
Time Complexity of Bubble Sort
void bubblesort( int[] a )
{
for ( int i = 0; i < a.length – 1; i++ )
for ( int j = 0; j < a.length – 1 – i; j++
)
{
if ( a[ j ] < a[ j + 1 ] )
{
int temp = a[ j ];
a[ j ] = a[ j + 1 ];
a[ j + 1 ] = temp;
}
}
}
• Let a.length = n.
• What is the total # of
comparisons as a function of n?
• This number is O( ? )
16
End 3.2
17
40
Defn. f( n ) is Θ( g( n ) ) when
f( n ) is O( g ( n ) ) and f( n ) is Ω( g( n ) ).
Show that:
if f1( x ) & f2( x ) are functions from Z+ to R and f1( x )
is Θ( g1( x ) ) and f2( x ) is Θ( g2( x ) ),
then f1f2 ( x ) is Θ( g1g2( x ) ).
18
40 Proof
1. Assume f1( x ) & f2( x ) are functions from Z+ to R and
f1( x ) is Θ( g1( x ) ) and f2( x ) is Θ( g2( x ) ).
2. f1( x ) is O( g1( x ) ).
3.
k1, C1, x > k1  f1( x )  C1g1( x )
4. f2( x ) is O( g2( x ) ).
5.
k2, C2, x > k2  f2( x )  C2g2( x )
(1. and defn of Θ)
(2.,Defn of O)
(1. and defn of Θ)
(4., Defn of O)
6. x > max{ k1, k2 }  f1 f2( x )  C1C2g1g2( x )
7. f1 f2( x ) is O( g1g2( x ) ).
(6., Defn of O)
19
40 Proof continued
1.
f1( x ) is Ω( g1( x ) ).
(Previous 1. & defn of Θ)
2.
k’1, C’1, x > k’1  f1( x ) ≥ C’1g1( x )
(1. & Defn of Ω)
3.
f2( x ) is Ω( g2( x ) ).
(Previous 1. & defn of Θ)
4.
k’2, C’2, x > k’2  f2( x ) ≥ C’2g2( x )
(3. & Defn of Ω)
5.
x > max{ k’1, k’2 }  f1 f2( x ) ≥ C’1C’2g1g2( x )
6.
f1 f2( x ) is Ω( g1g2( x ) ).
(5. & Defn of Ω)
7.
f1 f2( x ) is Θ( g1g2( x ) ).
(6., previous 7., defn Θ)
20
50
Show that ┌ xy ┐ is Ω(xy).
Proof:
1.
┌
xy ┐ ≥ xy.
(Defn of ceiling)
2. Let c = 1.
3. For x > 0, y > 0, ┌ xy ┐ ≥ cxy.
4. Therefore,┌ xy ┐ is Ω(xy).