SLIDE 1 Analysis of Algorithms
[ Section 4.1 ]
Examples of functions important in CS:
f(n) =
SLIDE 2 Analysis of Algorithms
[ Section 4.1 ]
Examples of functions important in CS:
f(n) = c
- the logarithm function: f(n) = logb n
SLIDE 3 Analysis of Algorithms
[ Section 4.1 ]
Examples of functions important in CS:
f(n) = c
- the logarithm function: f(n) = logb n
- the linear function:
f(n) =
SLIDE 4 Analysis of Algorithms
[ Section 4.1 ]
Examples of functions important in CS:
f(n) = c
- the logarithm function: f(n) = logb n
- the linear function:
f(n) = n
f(n) = n log n
SLIDE 5 Analysis of Algorithms
[ Section 4.1 ]
Examples of functions important in CS:
f(n) = c
- the logarithm function: f(n) = logb n
- the linear function:
f(n) = n
f(n) = n log n
- the quadratic function: f(n) = n2
SLIDE 6 Analysis of Algorithms
[ Section 4.1 ]
Examples of functions important in CS:
f(n) = c
- the logarithm function: f(n) = logb n
- the linear function:
f(n) = n
f(n) = n log n
- the quadratic function: f(n) = n2
- the cubic function and other polynomials
f(n) = n3 f(n) =
SLIDE 7 Analysis of Algorithms
[ Section 4.1 ]
Examples of functions important in CS:
f(n) = c
- the logarithm function: f(n) = logb n
- the linear function:
f(n) = n
f(n) = n log n
- the quadratic function: f(n) = n2
- the cubic function and other polynomials
f(n) = n3
- the exponential function:
f(n) =
SLIDE 8 Analysis of Algorithms
[ Section 4.1 ]
Comparing growth rates
- f(n) = c
- f(n) = logb n
- f(n) = n
- f(n) = n log n
- f(n) = n2
- f(n) = n3
- f(n) = bn
SLIDE 9 Analysis of Algorithms
[ Section 4.2 ]
How to analyze algorithms
SLIDE 10 Analysis of Algorithms
[ Section 4.2 ]
How to analyze algorithms
- Counting the number of primitive operations
Note: possible difference between the worst-case running time and the average-case running time
SLIDE 11
Analysis of Algorithms
[ Section 4.2.3 ]
Asymptotic notation Big-Oh notation: Let f(n) and g(n) be functions from integers to reals. We say that f(n) = O(g(n)) if there are constants c>0 and n0>0 such that f(n) ≤ c g(n) for every n ≥ n0 We also say that f(n) is order of g(n).
SLIDE 12
Analysis of Algorithms
[ Section 4.2.3 ]
Examples: f(n) = 5n-3 g(n) = n
SLIDE 13
Analysis of Algorithms
[ Section 4.2.3 ]
Examples: f(n) = 7n2+(n3)/5 g(n) = n4
SLIDE 14
Analysis of Algorithms
[ Section 4.2.3 ]
Examples: Insert-sort algorithm
// input: array A, output: array A is sorted int i,j; int n = A.length; for (i=0; i<n-1; i++) { j = i; while ((j>=0) && (A[j+1]<A[j])) { int tmp = A[j+1]; A[j+1] = A[j]; A[j] = tmp; j--; } }
SLIDE 15
Analysis of Algorithms
[ Section 4.2.3 ]
Asymptotic notation continued Big-Omega notation: Let f(n) and g(n) be functions from integers to reals. We say that f(n) = Ω(g(n)) if there are constants c>0 and n0>0 such that f(n) ≥ c g(n) for every n ≥ n0
SLIDE 16
Analysis of Algorithms
[ Section 4.2.3 ]
Asymptotic notation continued Big-Theta notation: Let f(n) and g(n) be functions from integers to reals. We say that f(n) = Θ(g(n)) if f(n) = O(g(n)) and f(n) = Ω(g(n)).
SLIDE 17 Analysis of Algorithms
[ Section 4.2.5 ]
Words of caution:
- what is 10100n ?
- exponential algorithms are a big NO (unless the input is
really small)