200 likes | 294 Views
Lecture 16 Complexity of Functions. CSCI – 1900 Mathematics for Computer Science Spring 2014 Bill Pine. Lecture Introduction. Reading Kolman Sections 5.2, 5.3 Examine some functions occurring frequently in Computer Science Characterize the efficiency of an algorithm Big-Oh Big-Theta.
E N D
Lecture 16Complexity of Functions CSCI – 1900 Mathematics for Computer Science Spring 2014 Bill Pine
Lecture Introduction • Reading • Kolman Sections 5.2, 5.3 • Examine some functions occurring frequently in Computer Science • Characterize the efficiency of an algorithm • Big-Oh • Big-Theta CSCI 1900
Functions in CS • mod n function • fn( m ) = m mod n • Example • f3( 7 ) = 1 f3( 8 ) = 2 f3( 111 ) = 0 • Factorial function • f ( n ) = n! n! = n* (n-1)! • f ( 0 ) = 1 f ( 1 ) = 1 f ( 2 ) = 2 f ( 3 ) = 6f ( 10 )> 106f ( 20 )>1018f (70) > 10100 CSCI 1900
Functions in CS (cont) • Floor function • f ( x ) = largest integer ≤ x • f (2.1) = 2 • f (2.9) = 2 • f (2.999999) = 2 • f (3) = 3 • f (-2.3) = -3 Nota Bene: -2 > -2.3 CSCI 1900
Functions in CS (cont) • Ceiling function • f( x ) = smallest integer ≥ x • f( 2.000001 ) = 3 • f( 2.9 ) = 3 • f( 2.999999 ) = 3 • f( 3 ) = 3 • f( 3.000001 ) = 4 • f( -2.3 ) = -2 Nota Bene: -2 > -2.3 CSCI 1900
Functions in CS (cont) • Exponential • f ( x )=2x • f ( 1 )=2 • f ( 2 )=4 • f ( 2.2 )=4.4957… • f ( 0 )=1 • f ( -1 )=1/2 • f ( -2 )=1/4 CSCI 1900
Functions in CS (cont) • Logarithm • fn( x )=logn(x) the power to which n must be raised to yield x • f2( 4 ) = 2 • f2( 8 ) = 3 • f2( 2 ) = 1 • f2( 1 ) = 0 • f2( 1/2 ) = -1 • f2( 1/16 ) = -4 • f2( 0 ) = undefined CSCI 1900
Growth of Functions CSCI 1900
Growth of Functions (cont) • Previous example show that functions grow at different rates • Specifically, let: f (x) = x, g(x) = 2x • f (1) = 1, g(1) = 2 • f (10) = 10, but g (10) = 1024 • Polynomial functions • n« n2 « n2.2 « n3 CSCI 1900
Growth of Functions (cont) • All log functions grow at the same rate, regardless of the base • log2 ( n ) grows at the same rate as log100 ( n ) • We usually write log2 as lg • Recall logn( k ) = logm( k ) / logm( n ) • Powers of the log function • (logn ) « (log n)2 « (log n)304 « n CSCI 1900
Growth of Functions (cont) • log compared to polynomials • lgn« n« nlg( n ) « n ( lg( n ) )2 « n (lg( n))1670 « n2 • Polynomials compare to exponentials • n2 « n3 « n2876 « 2n • Exponentials compared to factorial • 2n« n! CSCI 1900
Growth of Functions (cont) • In general, the classes of functions, in order of increasing running time are • constant « log( n ) « n « n log( n )« n2 « n3 « … « 2n« n! CSCI 1900
Big-Oh Notation • f O( g ) if there exist two constants, c and n0 such that |f (n) | c |g(n) | for all n n0 • This means: f grows no faster than g does • What is in O(n3)? • Anything that grows no faster than n3 • f ( n ) = 10n3 • f ( n ) = n3 + 100n2 –n • f ( n ) = n2 • f ( n ) = n lg n • f ( n ) = lg n • f ( n ) = 2 CSCI 1900
Big-Oh Example • Show that n3 + 100n2 +20 O( n3 ) • Need to find a c and n0 such that c n3 > n3 + 100n2 –n for all n > n0 • Two important consequences of f O( g ) • g serves as an upper bound on f • We ignore the behavior for small values of n CSCI 1900
Big-Theta Notation • f ( g ), if f and g have same order • f O( g ) and g O( f ) • What is in ( n3 ) • f ( n ) = n3 + 100n2 – nis in ( n3 ) • f ( n ) = 2 is not in ( n3 ) • f ( n ) = n2 is not in ( n3 ) • f ( n ) = lg nis not in ( n3 ) • f ( n ) = n lg nis not in ( n3 ) CSCI 1900
Running Time • The -class of a function that describes the number of steps performed by an algorithm is called the running time of the algorithm • This allows us to compare algorithms for a specific task • For example: • bubble sort ( n2 ) • quicksort ( n lg n) • What is the fastest running-time for a comparison-based sorting algorithm? CSCI 1900
Determining Running Time • To compare two algorithm’s running times • Select an operation that is central to the algorithm • For searching, we might choose comparison • For sorting, we might choose comparison or perhaps data saving • Examine the algorithm to determine how the count of the key operation depends upon “input size” • To evaluate a single algorithm • Count the total number of operations • Examine the algorithm to determine how the count of the key operation depends upon “input size” CSCI 1900
Running Time Example • Consider the following function function meanOf( n ) sum 0 for i = 1 thru n sum sum + i mean = sum / n return mean CSCI 1900
Running Time Example (cont) • What is the input size? • Identify and count the characterizing operation • Number of pre-loop operations • Number of operations in the loop • Number of post-loop operations • What is the running time? • Is there a more efficient way to determine meanOf? CSCI 1900
Key Concepts Summary • Examined some functions “useful” in Computer Science • Characterize the efficiency of an algorithm • Big-Oh • Big-Theta • Reading for next time • Kolman Sections 7.1, 7.2 CSCI 1900