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)
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 />
€