CMSC 341 Asymptotic Analysis. 2 Complexity How many resources will it take to solve a problem of a given size? –time –space Expressed as a function of.

Slides:



Advertisements
Similar presentations
CMSC 341 Asymptotic Analysis. 2 Mileage Example Problem: John drives his car, how much gas does he use?
Advertisements

Analysis of Algorithms
CSE 373: Data Structures and Algorithms Lecture 5: Math Review/Asymptotic Analysis III 1.
Fall 2006CENG 7071 Algorithm Analysis. Fall 2006CENG 7072 Algorithmic Performance There are two aspects of algorithmic performance: Time Instructions.
CSE332: Data Abstractions Lecture 2: Math Review; Algorithm Analysis Tyler Robison Summer
Chapter 3 Growth of Functions
The Growth of Functions
Chapter 10 Algorithm Efficiency
Asymptotic Growth Rate
CS 206 Introduction to Computer Science II 09 / 10 / 2008 Instructor: Michael Eckmann.
Introduction to Analysis of Algorithms
Chapter 2 Fundamentals of the Analysis of Algorithm Efficiency Copyright © 2007 Pearson Addison-Wesley. All rights reserved.
CS 206 Introduction to Computer Science II 01 / 28 / 2009 Instructor: Michael Eckmann.
Data Structures and Algorithms1 Basics -- 2 From: Data Structures and Their Algorithms, by Harry R. Lewis and Larry Denenberg (Harvard University: Harper.
David Luebke 1 8/17/2015 CS 332: Algorithms Asymptotic Performance.
Asymptotic Growth Rates Themes –Analyzing the cost of programs –Ignoring constants and Big-Oh –Recurrence Relations & Sums –Divide and Conquer Examples.
Asymptotic Notations Iterative Algorithms and their analysis
1 Chapter 2 Program Performance – Part 2. 2 Step Counts Instead of accounting for the time spent on chosen operations, the step-count method accounts.
Algorithm Analysis & Complexity We saw that a linear search used n comparisons in the worst case (for an array of size n) and binary search had logn comparisons.
Chapter 2.6 Comparison of Algorithms modified from Clifford A. Shaffer and George Bebis.
Week 2 CS 361: Advanced Data Structures and Algorithms
Algorithm Efficiency CS 110: Data Structures and Algorithms First Semester,
Mathematics Review and Asymptotic Notation
CSC 201 Analysis and Design of Algorithms Lecture 04: CSC 201 Analysis and Design of Algorithms Lecture 04: Time complexity analysis in form of Big-Oh.
The Growth of Functions Rosen 2.2 Basic Rules of Logarithms log z (xy) log z (x/y) log z (x y ) If x = y If x < y log z (-|x|) is undefined = log z (x)
CMSC 341 Asymptotic Analysis. 8/3/07 UMBC CMSC 341 AA2-color 2 Complexity How many resources will it take to solve a problem of a given size?  time 
CS 3343: Analysis of Algorithms
Iterative Algorithm Analysis & Asymptotic Notations
DISCRETE MATHEMATICS I CHAPTER 11 Dr. Adam Anthony Spring 2011 Some material adapted from lecture notes provided by Dr. Chungsim Han and Dr. Sam Lomonaco.
Algorithm Analysis An algorithm is a clearly specified set of simple instructions to be followed to solve a problem. Three questions for algorithm analysis.
Analysis of Algorithm Efficiency Dr. Yingwu Zhu p5-11, p16-29, p43-53, p93-96.
1 COMP3040 Tutorial 1 Analysis of algorithms. 2 Outline Motivation Analysis of algorithms Examples Practice questions.
Analysis of Algorithms These slides are a modified version of the slides used by Prof. Eltabakh in his offering of CS2223 in D term 2013.
Asymptotic Analysis-Ch. 3
Coursenotes CS3114: Data Structures and Algorithms Clifford A. Shaffer Department of Computer Science Virginia Tech Copyright ©
Analysis of Algorithms CSCI Previous Evaluations of Programs Correctness – does the algorithm do what it is supposed to do? Generality – does it.
Week 12 - Wednesday.  What did we talk about last time?  Asymptotic notation.
O, , and  Notations Lecture 39 Section 9.2 Wed, Mar 30, 2005.
Algorithm Analysis (Algorithm Complexity). Correctness is Not Enough It isn’t sufficient that our algorithms perform the required tasks. We want them.
Program Efficiency & Complexity Analysis. Algorithm Review An algorithm is a definite procedure for solving a problem in finite number of steps Algorithm.
Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of a computer program.
Asymptotic Growth Rates  Themes  Analyzing the cost of programs  Ignoring constants and Big-Oh  Recurrence Relations & Sums  Divide and Conquer 
CMSC 341 Asymptotic Analysis. 2 Complexity How many resources will it take to solve a problem of a given size? –time –space Expressed as a function of.
Asymptotic Analysis (based on slides used at UMBC)
Algorithmic Analysis Charl du Plessis and Robert Ketteringham.
Algorithm Analysis Part of slides are borrowed from UST.
Analysis of Algorithm. Why Analysis? We need to know the “behavior” of algorithms – How much resource (time/space) does it use So that we know when to.
The Fundamentals. Algorithms What is an algorithm? An algorithm is “a finite set of precise instructions for performing a computation or for solving.
David Luebke 1 1/6/2016 CS 332: Algorithms Asymptotic Performance.
1/6/20161 CS 3343: Analysis of Algorithms Lecture 2: Asymptotic Notations.
Algorithm Complexity L. Grewe 1. Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them?
E.G.M. PetrakisAlgorithm Analysis1  Algorithms that are equally correct can vary in their utilization of computational resources  time and memory  a.
8/3/07CMSC 341 Asymptotic Anaylsis1 CMSC 341 Asymptotic Analysis.
CMSC 341 Asymptotic Anaylsis1 CMSC 341 Asymptotic Analysis.
Dale Roberts Department of Computer and Information Science, School of Science, IUPUI Dale Roberts, Lecturer Computer Science, IUPUI
BITS Pilani Pilani Campus Data Structure and Algorithms Design Dr. Maheswari Karthikeyan Lecture1.
Complexity of Algorithms Fundamental Data Structures and Algorithms Ananda Guna January 13, 2005.
Ch03-Algorithms 1. Algorithms What is an algorithm? An algorithm is a finite set of precise instructions for performing a computation or for solving a.
Chapter 3 Chapter Summary  Algorithms o Example Algorithms searching for an element in a list sorting a list so its elements are in some prescribed.
LECTURE 2 : fundamentals of analysis of algorithm efficiency Introduction to design and analysis algorithm 1.
CSE 3358 NOTE SET 2 Data Structures and Algorithms 1.
Analysis of algorithms
Chapter 2 Fundamentals of the Analysis of Algorithm Efficiency
CSC 413/513: Intro to Algorithms
CMSC 341 Asymptotic Analysis.
Chapter 2.
CMSC 341 Asymptotic Analysis.
At the end of this session, learner will be able to:
Analysis of algorithms
Algorithm Course Dr. Aref Rashad
Presentation transcript:

CMSC 341 Asymptotic Analysis

2 Complexity How many resources will it take to solve a problem of a given size? –time –space Expressed as a function of problem size (beyond some minimum size) –how do requirements grow as size grows? Problem size –number of elements to be handled –size of thing to be operated on

3 Mileage Example Problem: John drives his car, how much gas does he use?

4 The Goal of Asymptotic Analysis How to analyze the running time (aka computational complexity) of an algorithm in a theoretical model. Using a theoretical model allows us to ignore the effects of –Which computer are we using? –How good is our compiler at optimization We define the running time of an algorithm with input size n as T ( n ) and examine the rate of growth of T( n ) as n grows larger and larger and larger.

5 Growth Functions Constant T(n) = c ex: getting array element at known location trying on a shirt calling a friend for fashion advice Linear T(n) = cn [+ possible lower order terms] ex: finding particular element in array (sequential search) trying on all your shirts calling all your n friends for fashion advice

6 Growth Functions (cont) Quadratic T(n) = cn 2 [ + possible lower order terms] ex: sorting all the elements in an array (using bubble sort) trying all your shirts (n) with all your ties (n) having conference calls with each pair of n friends Polynomial T(n) = cn k [ + possible lower order terms] ex:looking for maximum substrings in array trying on all combinations of k separates types of apparels (n of each) having conferences calls with each k-tuple of n friends

7 Growth Functions (cont) Exponential T(n) = c n [+ possible lower order terms] ex:constructing all possible orders of array elements Logarithmic T(n) = logn [ + possible lower order terms] ex:finding a particular array element (binary search) trying on all Garanimal combinations getting fashion advice from n friends using phone tree

8 A graph of Growth Functions

9 Expanded Scale

10 Asymptotic Analysis What happens as problem size grows really, really large? (in the limit) –constants don’t matter –lower order terms don’t matter

11 Analysis Cases What particular input (of given size) gives worst/best/average complexity? Best Case: if there’s a permutation of input data that minimizes “run time efficiency”, then that minimum is the best case run time efficiency. Worst Case is defined by replacing “minimizes” by “maximizes”. Mileage example: how much gas does it take to go 20 miles? –Worst case: all uphill –Best case: all downhill, just coast –Average case: “average terrain”

12 Cases Example Consider sequential search on an unsorted array of length n, what is time complexity? Best case: Worst case: Average case:

13 Definition of Big-Oh T(n) = O(f(n)) (read “T( n ) is Big-Oh of f( n )” ) if and only if T(n)  cf(n)for some constants c, n 0 and n  n 0 This means that eventually (when n  n 0 ), T( n ) is always less than or equal to c times f( n ). Loosely speaking, f( n ) is an “upper bound” for T ( n )

14 Big-Oh Example Suppose we have an algorithm that reads N integers from a file and does something with each integer. The algorithm takes some constant amount of time for initialization (say 500 time units) and some constant amount of time to process each data element (say 10 time units). For this algorithm, we can say T( N ) = N. The following graph shows T( N ) plotted against N, the problem size and 20N. Note that the function N will never be larger than the function T( N ), no matter how large N gets. But there are constants c 0 and n 0 such that T( N ) = n 0, namely c 0 = 20 and n 0 = 50. Therefore, we can say that T( N ) is in O( N ).

15 T( N ) vs. N vs. 20N

16 Simplifying Rules 1. If f(n) = O(g(n)) and g(n) = O(h(n)), then f(n) = O(h(n)) 2. If f(n) = O(kg(n)) for any k > 0, then f(n) = O(g(n)) 3. If f 1 (n) = O(g 1 (n)) and f 2 (n) = O(g 2 (n)), then f 1 (n) + f 2 (n) = O(max (g 1 (n), g 2 (n))) 4. If f 1 (n) = O(g 1 (n)) and f 2 (n) = O(g 2 (n)), then f 1 (n) * f 2 (n) = O(g 1 (n) * g 2 (n)) We will prove a number of these rules by applying the definition of Big O

17 Constants in Bounds Theorem: O(cf(x)) = O(f(x)) (Simplifying Rule #2) Proof: –T(x) = O(cf(x)) implies that there are constants c 0 and n 0 such that T(x)  c 0 (cf(x)) when x  n 0 –Therefore, T(x)  c 1 (f(x)) when x  n 0 where c 1 = c 0 c –Therefore, T(x) = O(f(x))

18 Sum in Bounds Theorem: (Simplifying Rule 3) Let T 1 (n) = O(f(n)) and T 2 (n) = O(g(n)). Then T 1 (n) + T 2 (n) = O(max (f(n), g(n))). Proof: –From the definition of O, T 1 (n)  c 1 f (n) for n  n 1 and T 2 (n)  c 2 g(n) for n  n 2 –Let n 0 = max(n 1, n 2 ). –Then, for n  n 0, T 1 (n) + T 2 (n)  c 1 f (n) + c 2 g(n) –Let c 3 = max(c 1, c 2 ). –Then, T 1 (n) + T 2 (n)  c 3 f (n) + c 3 g (n)  2c 3 max(f (n), g (n))  c max(f (n), g (n)) = O (max (f(n), g(n)))

19 Products in Bounds Theorem: (Simplifying Rule 4) Let T 1 (n) = O(f(n)) and T 2 (n) = O(g(n)). Then T 1 (n) * T 2 (n) = O(f(n) * g(n)). Proof: –Since T 1 (n) = O (f(n)), then T 1 (n)  c 1 f(n) when n  n 1 –Since T 2 (n) = O (g(n)), then T 2 (n)  c 2 g(n) when n  n 2 –Hence T 1 (n) * T 2 (n)  c 1 * c 2 * f(n) * g(n) when n  n 0 where n0 = max (n 1, n 2 ) –And T 1 (n) * T 2 (n)  c * f (n) * g(n) when n  n 0 where n 0 = max (n 1, n 2 ) and c = c 1* c 2 –Therefore, by definition, T 1 (n)*T 2 (n) = O(f(n)*g(n)).

20 Polynomials in Bounds Theorem: If T (n) is a polynomial of degree x, then T(n) = O(n x ). Proof: –T (n) = n x + n x-1 + … + k is a polynomial of degree x. –By the sum rule, the largest term dominates. –Therefore, T(n) = O(n x ).

21 Example Code: a = b; Complexity:

22 Example Code: sum = 0; for (i = 1; i <= n; i++) sum += n; Complexity:

23 Example Code: sum1 = 0; for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) sum1++; Complexity:

24 Example Code: sum2 = 0; for (i = 1 ; i <= n; i++) for (j = 1; j <= i; j++) sum2++; Complexity:

25 Example Code: sum = 0; for (j = 1; j <= n; j++) for (i = 1; i <= j; i++) sum++; for (k = 0; k < n; k++) A[ k ] = k; Complexity:

26 Example Code: sum1 = 0; for (k = 1; k <= n; k *= 2) for (j = 1; j <= n; j++) sum1++; Complexity:

27 Example Code: sum2 = 0; for (k = 1; k <= n; k *= 2) for (j = 1; j <= k; j++) sum2++; Complexity:

28 Example Square each element of an N x N matrix Printing the first and last row of an N x N matrix Finding the smallest element in a sorted array of N integers Printing all permutations of N distinct elements

29 Some Questions 1. Is upper bound the same as worst case? 2. What if there are multiple parameters? Ex: Rank order of p pixels in c colors for (i = 0; i < c; i++) count[i] = 0; for (i = 0; i < p; i++) count[value(i)]++; sort(count)

30 Space Complexity Does it matter? What determines space complexity? How can you reduce it? What tradeoffs are involved?

31 A General Theorem Consider the limit of 2 functions, f(x) and g(x) as x grows large: l can go only to 0,∞, or some constant. l = 0 if and only if f(x) is O(g(x)) l = ∞ if and only of g(x) is O(f(x)) l = k if and only if f(x)/g(x) is O(1). Example: f(x) = x 2 and g(x) = x 3 Then and x 2 is O(x 3 )

32 L’Hôspital’s Rule Frequently, when we try to use the general theorem, we get an indeterminate form of ∞/∞. In that case, we can use L’Hôspital’s rule, which states that We can use this rule to apply the General Theorem. The next slide is an example

33 Polynomials of Logarithms in Bounds Theorem: lg x n = O(n) for any positive constant k Proof: –Note that lg k n means (lg n) k. –Need to show lg k n  cn for n  n 0. Equivalently, can show lg n  cn 1/k –Letting a = 1/k, we will show that lg n = O(n a ) for any positive constant a. Use L’Hospital’s rule: Ex: lg (n) = O(n)

34 Polynomials vs Exponentials in Bounds Theorem: n k = O(a n ) for a > 1 Proof: –Use L’Hospital’s rule =... = 0 Ex: n = O( n )

35 Relative Orders of Growth n (linear) log k n for 0 < k < 1 constant n 1+k for k > 0 (polynomial) 2 n (exponential) n log n log k n for k > 1 n k for 0 < k < 1 log n

36 Big-Oh is not the whole story Suppose you have a choice of two approaches to writing a program. Both approaches have the same asymptotic performance (for example, both are O(n lg(n)). Why select one over the other, they're both the same, right? They may not be the same. There is this small matter of the constant of proportionality. Suppose algorithms A and B have the same asymptotic performance, T A (n) = T B (n) = O(g(n)). Now suppose that A does 10 operations for each data item, but algorithm B only does 3. It is reasonable to expect B to be faster than A even though both have the same asymptotic performance. The reason is that asymptotic analysis ignores constants of proportionality. The following slides show a specific example.

37 Algorithm A Let's say that algorithm A is { initialization// takes 50 units read in n elements into array A;// 3 units per element for (i = 0; i < n; i++) { do operation1 on A[i]; // takes 10 units do operation2 on A[i]; // takes 5 units do operation3 on A[i]; // takes 15 units } } T A (n) = n + ( )n = n

38 Algorithm B Let's now say that algorithm B is { initialization// takes 200 units read in n elements into array A; // 3 units per element for (i = 0; i < n; i++) { do operation1 on A[i]; // takes 10 units do operation2 on A[i]; /takes 5 units } } T B (n) = n + (10 + 5)n = n

39 T A ( n ) vs. T B ( n )

40 A concrete example NT(n) = nT(n) = nlgnT(n) = n 2 T(n) = n 3 Tn = 2 n microsec 0.01 microsec0.03 microsec0.13 microsec0.03 microsec microsec0.03 microsec0.1 microsec1 microsec microsec0.09 microsec0.4 microsec8 microsec1 millisec microsec0.28 microsec2.5 microsec125 microsec13 days microsec0.66 microsec10 microsec1 millisec4 x years The following table shows how long it would take to perform T(n) steps on a computer that does 1 billion steps/second. Note that a microsecond is a millionth of a second and a millisecond is a thousandth of a second. Notice that when n >= 50, the computation time for T(n) = 2 n has started to become too large to be practical. This is most certainly true when n >= 100. Even if we were to increase the speed of the machine a million-fold, 2 n for n = 100 would be 40,000,000 years, a bit longer than you might want to wait for an answer.

41 Relative Orders of Growth constant log k n for 0 < k < 1 log n log k n for k> 1 n k for k < 1 n (linear) n log n n 1+k for k > 0 (polynomial) 2 n (exponential)