General rules: Find big-O

advertisement
General rules: Find big-O
• f(n) = k = O(1)
• f(n) = aknk + ak-1nk-1 + . . . + a1n1 + a0 = O(nk)
• Other functions, try to find the dominant term
according to the growth rate of the well
known functions
• Example
f(n)=5n2+2n
f(n)=5n2+3nlog(n)
A Hierarchy of Growth Rates
A Hierarchy of Growth Rates (cont’d)
Theorem
•
•
•
•
•
•
•
•
•
•
The function is big-O of its successors
1
Logb(n)
N
nLogb(n)
N2
2n
3n
n!
nn
Big-Omega Notation
• Definition:
f(n) = (g(n)) if there exist positive constants c and N
such that f(n)  cg(n) for all n  N
• This says that function f(n) grows at a rate no slower
than g(n); thus g(n) is a lower bound on f(n)
• Note the equivalence
– f(n) = (g(n)) iff g(n) = O(f(n))
• graph
Big-Theta Notation
• Definition:
f(n) = (g(n)) if there exist positive constants c1,
c2, and N such that c1g(n) f(n)  c2g(n) for all n 
N
• Note that f(n) = (g(n)) iff f(n) = O(g(n)) and f(n) =
(g(n))
– This says that f(n) grows at the same rate as g(n)
• Graph
Summary of Notations
• Big-O Notation gives an upper bound for a
function to within a constant factor f(n) = O(g(n))
• Big-Omega Notation gives a lower bound for a
function to within a constant function f(n) =
(g(n))
• Big-Theta Notation bounds a function to within
constant factors f(n) = (g(n))
General rules: Find big-O
• f(n) = k = O(1)
• f(n) = aknk + ak-1nk-1 + . . . + a1n1 + a0 = O(nk)
• Other functions, try to find the dominant term
according to the above theorem
• Example
f(n)=5n2+2n
f(n)=5n2+3nlog(n)
Big-O for some algorithms
• Linear search
• Binary search
Download