section 9.1 real-valued functions of a real variable and their graphs
Post on 21-Dec-2015
222 views
TRANSCRIPT
Let f be a real valued function of a real variable. The graph of f is the set of all points (x,y) in the Cartesian coordinate plane with the property that x is in the domain of f and y = f(x)
For application in computer science, we are almost invariably concerned with situations where x and a are nonnegative.
Power Functions xa, a 1
• The higher the power of x, the faster the function grows.– xa grows faster than xb if a > b.
Power Functions xa, 0 < a < 1
• The lower the power of x, the more slowly the function grows.– xa grows more slowly than xb if a < b.
• This is the same rule as before, stated in the contrapositive.
Multiples of Functions
• Notice that x2 eventually exceeds any constant multiple of x.
• Generally, if f(x) grows faster than g(x), then f(x) also grows faster than cg(x), for any real number c.
• In other words, we think of g(x) and cg(x) as growing at the “same rate.”
• If the growth rate of one function is a constant time the growth rate of another then they’re said to’ve the same growth rate
Growth of the Logarithmic Function
• The logarithmic functions grow more and more slowly as x gets larger and larger.
Logarithmic Functions vs. Power Functions
• The logarithmic functions grow more slowly than any power function xa, 0 < a < 1.
f(x) vs. f(x) log2 x
• The growth rate of log x is between the growth rates of 1 and x.
• Therefore, the growth rate of f(x) log x is between the growth rates of f(x) and x f(x).
Growth of the Exponential Function
• The exponential functions grow faster and faster as x gets larger and larger.
• Every exponential function grows faster than every power function.
f(x) = 2x vs. Power Functions (Large Values of x)
5 10 15 20
500
1000
1500
2000
2500
3000
3500
2x
x3
“Big-Oh” Notation: O(f)
• Let g : R R be a function.
• A function f : R R is “of order g,” written “f(x) is O(g(x)),” if there exist constants M, x0 R such that
f(x) Mg(x)for all x x0.
Growth Rates
• If f(x) is O(g(x)), then the growth rate of f is no greater than the growth rate of g.
• If f(x) is O(g(x)) and g(x) is O(f(x)), then f and g have the same growth rate.
Common Growth Rates
Growth Rate Example
O(1) Access an array element
O(log2 x) Binary search
O(x) Sequential search
O(x log2 x) Quick sort
O(x2) Bubble sort
O(2x) Factor an integer
O(x!) Traveling salesman problem
Estimating Run Times
• Suppose a program has growth rate O(f), for a specific function f(x).
• Then the run time is of the formt = cf(x)
for some real number c.• Suppose the program runs in t0 seconds when
the input size is x0. Then
c = t0/f(x0).
Comparison of Growth Rates
• Consider programs with growth rates of O(1), O(log x), O(x), O(x log x), and O(x2).
• Assume that each program runs in 1 second when the input size is 100.
• Calculate the run times for input sizes 102, 103, 104, 105, 106, and 107.
Comparison of Growth Rates
x O(1) O(log x) O(x) O(x log x) O(x2)
102 1 sec 1 sec 1 sec 1 sec 1 sec
103 1 sec 1.5 sec 10 sec 15 sec 17 min
104 1 sec 2 sec 1.7 min 3.3 min 2.8 hrs
105 1 sec 2.5 sec 17 min 42 min 11 days
106 1 sec 3 sec 2.8 hrs 8.3 hrs 3.2 yrs
107 1 sec 3.5 sec 1.2 days 4.1 days 320 yrs
Comparison with O(2n)
• Now consider a program with growth rate O(2x).
• Assume that the program runs in 1 second when the input size is 100.
• Calculate the run times for input sizes 100, 110, 120, 130, 140, and 150.
Comparison with O(2n)
x O(x2) O(2x)
100 1 sec 1 sec
110 1.2 sec 17 min
120 1.4 sec 12 days
130 1.7 sec 34 yrs
140 2.0 sec 35,000 yrs
150 2.3 sec 36,000,000 yrs
Comparison with O(n!)
• Now consider a program with growth rate O(x!).
• Assume that the program runs in 1 second when the input size is 100.
• Calculate the run times for input sizes 100, 101, 102, 103, 104, and 105.
Comparison with (n!)
x O(2x) O(x!)
100 1 sec 1 sec
101 2 sec 1.7 min
102 4 sec 2.9 hrs
103 8 sec 12 days
104 16 sec 3.5 yrs
105 32 sec 367 yrs
Comparing Orders
• Let f and g be two functions.
• Define O(f) O(g) to mean that f is O(g).
• Define O(f) = O(g) to mean that f is O(g) and g is O(f).
• Define O(f) < O(g) to mean that f is O(g), but g is not O(f).
Comparing Orders
• Theorem:– O(xa) < O(xb) if 0 < a < b.
– O(loga x) = O(logb x) for all a, b > 1.
– O(1) < O(log x) < O(xa) for all a > 0.– O(ax) < O(bx) if 1 < a < b.– O(xa) < O(bx) for all a > 0, b > 1.– O(ax) < O(x!) for all a > 1.
Comparing Orders
• Theorem: For all functions f(x), g(x), and h(x), if
O(f) < O(g),
then
O(f h) < O(g h).
Feasible vs. Infeasible
• Algorithms with polynomial growth rates or less are considered feasible.
• Algorithms with growth rates greater than polynomial are considered infeasible.
• Of course, all algorithms are feasible for small input sizes.– It is feasible to factor small integers (< 50 digits).
– It is infeasible to factor large integers (> 200 digits).