Download presentation
Presentation is loading. Please wait.
Published byCalvin Barrett Modified over 9 years ago
1
David Luebke 1 1/6/2016 CS 332: Algorithms Asymptotic Performance
2
David Luebke 2 1/6/2016 Review: Asymptotic Performance Asymptotic performance: How does algorithm behave as the problem size gets very large? oRunning time oMemory/storage requirements Remember that we use the RAM model: oAll memory equally expensive to access oNo concurrent operations oAll reasonable instructions take unit time ] Except, of course, function calls oConstant word size ] Unless we are explicitly manipulating bits
3
David Luebke 3 1/6/2016 Review: Running Time Number of primitive steps that are executed Except for time of executing a function call most statements roughly require the same amount of time We can be more exact if need be Worst case vs. average case
4
David Luebke 4 1/6/2016 An Example: Insertion Sort InsertionSort(A, n) { for i = 2 to n { key = A[i] j = i - 1; while (j > 0) and (A[j] > key) { A[j+1] = A[j] j = j - 1 } A[j+1] = key } }
5
David Luebke 5 1/6/2016 An Example: Insertion Sort InsertionSort(A, n) { for i = 2 to n { key = A[i] j = i - 1; while (j > 0) and (A[j] > key) { A[j+1] = A[j] j = j - 1 } A[j+1] = key } } 10203040 1234 i = 4j = 1key = 20 A[j] = 10 A[j+1] = 20
6
David Luebke 6 1/6/2016 Insertion Sort InsertionSort(A, n) { for i = 2 to n { key = A[i] j = i - 1; while (j > 0) and (A[j] > key) { A[j+1] = A[j] j = j - 1 } A[j+1] = key } } What is the precondition for this loop?
7
David Luebke 7 1/6/2016 Insertion Sort InsertionSort(A, n) { for i = 2 to n { key = A[i] j = i - 1; while (j > 0) and (A[j] > key) { A[j+1] = A[j] j = j - 1 } A[j+1] = key } } How many times will this loop execute?
8
David Luebke 8 1/6/2016 Rules Rule of sums Rule of products
9
David Luebke 9 1/6/2016 Insertion Sort Statement Effort InsertionSort(A, n) { for i = 2 to n { c 1 n (why?) key = A[i] c 2 (n-1) j = i - 1; c 3 (n-1) while (j > 0) and (A[j] > key) { c 4 T A[j+1] = A[j] c 5 (T-(n-1)) j = j - 1 c 6 (T-(n-1)) } 0 A[j+1] = key c 7 (n-1) } 0 } T = t 2 + t 3 + … + t n where t i is number of while expression evaluations for the i th for loop iteration
10
David Luebke 10 1/6/2016 Analyzing Insertion Sort T(n) = c 1 n + c 2 (n-1) + c 3 (n-1) + c 4 T + c 5 (T - (n-1)) + c 6 (T - (n-1)) + c 7 (n-1) = c 8 T + c 9 n + c 10 What can T be? Best case -- inner loop body never executed ot i = 1 T(n) is a linear function Worst case -- inner loop body executed for all previous elements ot i = i T(n) is a quadratic function Average case o???
11
David Luebke 11 1/6/2016 Analysis Simplifications Ignore actual and abstract statement costs Order of growth is the interesting measure: oHighest-order term is what counts ] Remember, we are doing asymptotic analysis ] As the input size grows larger it is the high order term that dominates
12
David Luebke 12 1/6/2016 Upper Bound Notation We say InsertionSort’s run time is O(n 2 ) Properly we should say run time is in O(n 2 ) Read O as “Big-O” (you’ll also hear it as “order”) In general a function f(n) is O(g(n)) if there exist positive constants c and n 0 such that f(n) c g(n) for all n n 0 Formally O(g(n)) = { f(n): positive constants c and n 0 such that f(n) c g(n) n n 0
13
David Luebke 13 1/6/2016 Insertion Sort Is O(n 2 ) Proof Suppose runtime is an 2 + bn + c oIf any of a, b, and c < 0 then a=|a|,.. an 2 + bn + c (a + b + c)n 2 + (a + b + c)n + (a + b + c) 3(a + b + c)n 2 for n 1 Let c’ = 3(a + b + c) and let n 0 = 1 Questions Is InsertionSort O(n 3 )? Is InsertionSort O(n)?
14
David Luebke 14 1/6/2016 Big O Fact A polynomial of degree k is O(n k ) Proof: Suppose f(n) = b k n k + b k-1 n k-1 + … + b 1 n + b 0 oLet a i = | b i | f(n) a k n k + a k-1 n k-1 + … + a 1 n + a 0
15
David Luebke 15 1/6/2016 Lower Bound Notation We say InsertionSort’s run time is (n) In general a function f(n) is (g(n)) if positive constants c and n 0 such that 0 c g(n) f(n) n n 0 Proof: Suppose run time is an + b (a,b constants) oAssume a and b are positive (what if b is negative?) an an + b
16
David Luebke 16 1/6/2016 Asymptotic Tight Bound A function f(n) is (g(n)) if positive constants c 1, c 2, and n 0 such that c 1 g(n) f(n) c 2 g(n) n n 0 Theorem f(n) is (g(n)) iff f(n) is both O(g(n)) and (g(n)) Proof:from definitions
17
David Luebke 17 1/6/2016 Practical Complexity
18
David Luebke 18 1/6/2016 Practical Complexity
19
David Luebke 19 1/6/2016 Practical Complexity
20
David Luebke 20 1/6/2016 Practical Complexity
21
David Luebke 21 1/6/2016 Practical Complexity
22
David Luebke 22 1/6/2016 Other Asymptotic Notations A function f(n) is o(g(n)) if positive constants c and n 0 such that f(n) < c g(n) n n 0 A function f(n) is (g(n)) if positive constants c and n 0 such that c g(n) < f(n) n n 0 Intuitively, o() is like < O() is like () is like > () is like () is like =
23
David Luebke 23 1/6/2016 Deriving O(g(n)) for T(n) Solving recurrences Substitution method Master theorem (advanced course)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.