10.02.2015 Views

CSE 2320 Notes 2: Growth of Functions f(n) g(n) cg(n)

CSE 2320 Notes 2: Growth of Functions f(n) g(n) cg(n)

CSE 2320 Notes 2: Growth of Functions f(n) g(n) cg(n)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>CSE</strong> <strong>2320</strong> <strong>Notes</strong> 2: <strong>Growth</strong> <strong>of</strong> <strong>Functions</strong><br />

1<br />

(Last updated 12/26/13 12:39 PM)<br />

Sedgewick 2.1-2.3<br />

Why constants are annoying . . .<br />

Problem Instance <strong>of</strong> Size n (+ Constraints)<br />

⇓<br />

Algorithm for Problem<br />

⇓<br />

Language<br />

⇓<br />

Compiler<br />

⇓<br />

Machine<br />

clock<br />

memory levels<br />

word length<br />

instruction set<br />

⇓<br />

Resources Consumed (time, memory, processors, bandwidth)<br />

Need to compare time and space usage <strong>of</strong> various algorithms for a problem.<br />

2.A. ASYMPTOTIC NOTATION<br />

Sedgewick 2.4<br />

Ο( g( n)<br />

) is a set <strong>of</strong> functions:<br />

( ) ∈ Ο g( n)<br />

f n<br />

( ) iff ∃ c and<br />

n 0 such that<br />

0 ≤ f ( n) ≤ <strong>cg</strong>( n) when<br />

n ≥ n 0<br />

€<br />

<strong>cg</strong>(n)<br />

€<br />

€<br />

€<br />

€<br />

f(n)<br />

g(n)<br />

Theorem: If<br />

lim<br />

n→∞<br />

f (n)<br />

g(n)<br />

is a constant, then f(n) ∈ O(g(n)).<br />


f(n) = n 2 , g(n) = n 3<br />

f(n) = n 3 , g(n) = n 2<br />

€<br />

€<br />

lim n2<br />

n→∞ n 3 = lim<br />

n→∞<br />

f(n) = 3n 2 + 2n – 3, g(n) = 5n 2 – n + 2<br />

lim 3n2 + 2n − 3<br />

n→∞ 5n 2 =<br />

− n + 2<br />

2n<br />

3n 2 = lim 2<br />

n→∞ 6n = 0 ⇒ n2 ∈ Ο(n 3 )<br />

lim n3<br />

n→∞ n 2 = lim 3n2<br />

n→∞ 2n = lim 6n<br />

n→∞ 2 = unbounded ⇒ n3 ∉ Ο(n 2 )<br />

lim 6n + 2<br />

n→∞<br />

10n −1 = lim 6<br />

n→∞10 = 3 5 ⇒ 3n2 + 2n − 3 ∈ Ο(5n 2 − n + 2)<br />

2<br />

Conclusion: Toss out low-order terms<br />

€<br />

Is sin( x) ∈ Ο( cos( x)<br />

)<br />

€<br />

n k ⎛<br />

∈ Ο⎜<br />

n l ⎞<br />

⎟ if<br />

⎝ ⎠<br />

€<br />

l ≥ k.<br />

cos(x)<br />

€<br />

sin(x)<br />

Is<br />

( ) ∈ Ο log 10 ( x)<br />

ln x<br />

( )<br />

€<br />

€<br />

Is 2 n ⎛<br />

∈ Ο⎜<br />

n k ⎞<br />

⎟ for some fixed k<br />

⎝ ⎠<br />

n k ⎛<br />

∈ Ο⎜<br />

2 n ⎞<br />

⎟ for any k. General case, n k ⎛<br />

∈ Ο⎜<br />

c n ⎞<br />

⎟ for any c > 1<br />

⎝ ⎠<br />

⎝ ⎠<br />

Be sure to appreciate Tables 2.1 and 2.2 in Sedgewick<br />

€<br />

( ) is a set <strong>of</strong> functions:<br />

Ω g( n)<br />

€<br />

( ) ∈ Ω g( n)<br />

f n<br />

( ) iff ∃ c and<br />

n0 such that<br />

0 ≤ <strong>cg</strong>( n) ≤ f ( n) ( c > 0) when<br />

n ≥ n0<br />

€<br />

g(n)<br />

€<br />

€<br />

€<br />

€<br />

f(n)<br />

<strong>cg</strong>(n)


Theorem: If<br />

lim g(n)<br />

n→∞ f (n)<br />

is a constant, then<br />

( ) ∈ Ω g( n)<br />

f n<br />

( ).<br />

3<br />

( ) = n 2 ,<br />

g n<br />

€<br />

f ( n) = 3n 3<br />

lim<br />

n→∞<br />

n2 €<br />

3n 3 = lim<br />

2n<br />

n→∞ 9n 2 = lim 2<br />

n→∞18n = 0 ⇒ n3 ∈ Ω(n 2 )<br />

€<br />

Upper bounds (O()) are for particular algorithms.<br />

€<br />

Lower bounds € (Ω()) are for indicating the inherent difficulty <strong>of</strong> problems.<br />

The hunt for an optimal algorithm . . . (Sedgewick 2.7)<br />

http://rjlipton.wordpress.com/2012/02/01/a-brief-history-<strong>of</strong>-matrix-product/<br />

Best upper bound:<br />

⎛<br />

Ο⎜<br />

n 2.373 ⎞<br />

⎟<br />

⎝ ⎠<br />

Best lower bound:<br />

⎛<br />

Ω⎜<br />

n 2 ⎞<br />

⎟<br />

⎝ ⎠<br />

Θ-notation (asymptotically tight bound) – Used to express time for worst-case instances for algorithm<br />

f<br />

€<br />

n<br />

( ) iff<br />

( ) ∈ Θ g( n)<br />

( ) ∈ Ο g( n)<br />

f n<br />

( ) and<br />

f n<br />

€<br />

( ).<br />

( ) ∈ Ω g( n)<br />

Theorem: If<br />

€<br />

lim g(n)<br />

n→∞ f (n)<br />

€<br />

is a constant > 0, then f(n) ∈ Θ(g(n)).<br />

€<br />

f(n) = 3n 2 + 2n – 3, g(n) = 5n 2 + n - 1<br />

€<br />

lim 3n2 + 2n − 3<br />

n→∞ 5n 2 =<br />

+ n −1<br />

lim 6n + 2<br />

n→∞<br />

10n +1 = lim 6<br />

n→∞10 = 3 5 ⇒ 3n2 + 2n − 3 ∈ Θ(5n 2 + n −1)<br />

€<br />

€<br />

Θ( f ( n)<br />

) is an equivalence relation . . .<br />

Symmetric:<br />

Reflexive:<br />

Transitive:<br />

( ) ∈ Θ f ( n)<br />

( ) ∈ Θ f ( n)<br />

( ) ∈ Θ g( n)<br />

g n<br />

f n<br />

f n<br />

€<br />

€<br />

Accepted<br />

€<br />

abuses <strong>of</strong> asymptotic notation.<br />

€<br />

€<br />

1. n 2 ⎛<br />

+ n = Θ⎜<br />

n 2 ⎞<br />

⎟ means<br />

⎝ ⎠<br />

( ) ⇔ f ( n) ∈ Θ( g( n)<br />

) [Doesn’t work for O or Ω]<br />

( ) [Works for O and Ω]<br />

( ) and g( n) ∈ Θ( h( n)<br />

) ⇒ f ( n) ∈ Θ( h( n)<br />

) [Works for O and Ω]<br />

€<br />

n 2 ⎛<br />

+ n ∈ Θ⎜<br />

n 2 ⎞<br />

⎟ .<br />

⎝ ⎠<br />

€<br />

€<br />

€<br />

2.<br />

3.<br />

3n 2 + 2n +1= 3n 2 + Θ n<br />

2 + 3Θ n<br />

€<br />

( ) means . . .<br />

( ) = n + Θ( n) means . . .


Aside: Indicating that a bound could be improved:<br />

4<br />

o(f) = O(f) - Θ(f)<br />

n 2 ∈ o(n 3 )<br />

ω(f) = Ω(f) - Θ(f)<br />

1<br />

n 2 ∈ ω ⎛ 1 ⎞<br />

⎜<br />

⎝ n 3 ⎟<br />

⎠<br />

Example: p. 46 <strong>of</strong> Demaine & O’Rourke, Geometric Folding Algorithms: Linkages, Origami, &<br />

Polyhedra, Cambridge Univ. Press, 2007.<br />

€<br />

⎛<br />

“Open Problem 4.1: Faster Generic Rigidity in 2D. Is there a o⎜<br />

n 2 ⎞<br />

⎟ -time algorithm to test generic<br />

⎝ ⎠<br />

rigidity <strong>of</strong> a given graph with n vertices” (http://minerva.cs.mtholyoke.edu/demos)<br />

2.B. APPLYING ASYMPTOTIC ANALYSIS TO CODE SEGMENTS<br />

Sedgewick 2.6<br />

for (i=0; i


equalCount=0;<br />

for (i=0; i


c=1.0/ab[k][k];<br />

for (i=k+1;i


2.C. DEMONSTRATING FUNDAMENTAL RESULTS FOR ASYMPTOTIC NOTATION<br />

7<br />

f(n) and g(n) are positive functions. Show max(f(n),g(n)) = Θ(f(n) + g(n))<br />

O: Since f(n) ≤ f(n) + g(n) and g(n) ≤ f(n) + g(n)<br />

max(f(n),g(n)) ≤ f(n) + g(n) for all n, so n 0 = 0 and c = 1<br />

Ω: Must have c(f(n) + g(n)) ≤ max(f(n),g(n)), so choose n 0 = 0 and c ≤ 1/2 [Consider f(n) = g(n)]<br />

_c_ _+_ _f_ _g_ _max_<br />

10 1 9 9<br />

10 2 8 8<br />

10 3 7 7<br />

10 5 5 5<br />

Test Problem: Prove that if<br />

( ) ∈ Ω f ( n)<br />

g n<br />

( ) then<br />

( ) ∈ Ο g( n)<br />

f n<br />

( ).<br />

cf ( n) ≤ g( n) when n ≥ n 0<br />

So, f ( n) ≤ € 1 c g n<br />

( ) when n ≥ n 0<br />

Need f ( n) ≤ dg( n) when n ≥ n 1<br />

€<br />

Choose d = 1 c and n 1 = n 0<br />

2.D. MISCELLANEOUS<br />

€ floor(x) =<br />

⎣x⎦<br />

Largest integer ≤ x<br />

⎣2.5⎦ = <br />

⎣−2.5⎦ = <br />

ceiling(x) =<br />

€<br />

€<br />

Worst-case number <strong>of</strong> probes for binary search:<br />

€<br />

⎡x⎤<br />

Smallest integer ≥ x<br />

⎡2.5⎤ = <br />

€<br />

⎣lg n⎦+1<br />

⎡−2.5⎤ = <br />

Consider worst-case searches on tables<br />

€<br />

with 15 elements<br />

€<br />

(4) and 16 elements (5).<br />

Review:<br />

2 n ⎛<br />

Ο⎜<br />

3 n ⎞<br />

⎟<br />

⎝ ⎠<br />

2 n ⎛<br />

Ω⎜<br />

3 n ⎞<br />

⎟<br />

⎝ ⎠<br />

€ ⎛<br />

lg⎜<br />

2 n ⎞<br />

⎟ = n<br />

⎝ ⎠<br />

⎛<br />

lg⎜<br />

3 n ⎞<br />

⎟ = nlg3<br />

⎝ ⎠<br />

⎛<br />

lg⎜<br />

2 n ⎞<br />

⎝ ⎠<br />

⎟ = Θ ⎛<br />

lg ⎛<br />

⎜ 3 n ⎞ ⎞<br />

⎜ ⎟ ⎟<br />

⎝ ⎝ ⎠ ⎠<br />

Factorials:<br />

€<br />

n<br />

n!= ∏ i =1•2• 3•...• n<br />

i=1<br />


( ) = lgi<br />

lg n!<br />

n<br />

∑<br />

i=1<br />

∈ Θ( n lgn)<br />

8<br />

€<br />

n n! lg(n!) n lg n<br />

1 1 0 0<br />

2 2 1 2<br />

3 6 2.58 4.75<br />

4 24 4.58 8<br />

5 120 6.91 11.61<br />

6 720 9.49 15.51<br />

7 5040 12.3 19.65<br />

8 40320 15.3 24<br />

9 362880 18.47 28.53<br />

10 3628800 21.79 33.22<br />

11 39916800 25.25 38.05<br />

12 479001600 28.84 43.02<br />

13 6227020800 32.54 48.11<br />

14 87178291200 36.34 53.30<br />

15 1307674368000 40.25 58.60<br />

20 2.43E18 61.08 86.44<br />

200 1245 1528<br />

2000 19053 21932<br />

20000 256909 285754<br />

200000 3233399 3521928<br />

2000000 38977759 41863137<br />

€<br />

O:<br />

€ Ω:<br />

€<br />

€<br />

€<br />

€<br />

n!≤ n n<br />

lg n!<br />

lg n!<br />

( ) ≤ n lg n<br />

( ) ∈ Ο( nlg n)<br />

n!=1•...• n 2 • ⎛<br />

⎜<br />

n ⎝ 2 +1 ⎞<br />

⎠<br />

⎛<br />

⎜<br />

n ⎝ 2 + 2 ⎞<br />

⎟ •...• n<br />

⎠<br />

≥1•...• n n<br />

2 •( n ) 2<br />

n<br />

+ k ≥<br />

2<br />

n for n > 3 and k ≥ 0<br />

n<br />

≥ ( n) 2<br />

1•...• n 2 ≥1<br />

n €<br />

lg(n!) ≥ lg( n ) 2 = n lgn<br />

2 2 = 1 4 nlg n<br />

€<br />

( http://en.wikipedia.org/wiki/Stirling's_approximation )<br />

2.E. ASYMPTOTIC<br />

€<br />

NOTATION FOR TWO PARAMETERS (aside, from Cormen)<br />

( ) =<br />

Ο g( n,m)<br />

( ) : ∃positive constants c,n0, and m0 s.t.<br />

for every ( n,m) pair with either n ≥ n 0 or m ≥ m 0<br />

0 ≤ f ( n,m) ≤ <strong>cg</strong>( n,m)<br />

⎧ f n,m<br />

⎪<br />

⎨<br />

⎪<br />

⎩<br />

⎫<br />

⎪<br />

⎬<br />

⎪<br />

⎭<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!