Chapter 2.6 Comparison of Algorithms modified from Clifford A. Shaffer and George Bebis.

Slides:



Advertisements
Similar presentations
Analysis of Algorithms CS 477/677
Advertisements

Analysis of Algorithms CS Data Structures Section 2.6.
Lecture: Algorithmic complexity
Razdan with contribution from others 1 Algorithm Analysis What is the Big ‘O Bout? Anshuman Razdan Div of Computing.
Fall 2006CENG 7071 Algorithm Analysis. Fall 2006CENG 7072 Algorithmic Performance There are two aspects of algorithmic performance: Time Instructions.
Chapter 3 Growth of Functions
Chapter 10 Algorithm Efficiency
CSC401 – Analysis of Algorithms Lecture Notes 1 Introduction
Sorted Lists CS Data Structures. Sorted List Specification (partial) InsertItem (ItemType item) Function: Adds item to list Preconditions: (1) List.
© 2004 Goodrich, Tamassia 1 Lecture 01 Algorithm Analysis Topics Basic concepts Theoretical Analysis Concept of big-oh Choose lower order algorithms Relatives.
Introduction to Analysis of Algorithms
Complexity Analysis (Part I)
Analysis of Algorithms (Chapter 4)
Analysis of Algorithms1 Estimate the running time Estimate the memory space required. Time and space depend on the input size.
Lecture 3 Aug 31, 2011 Goals: Chapter 2 (algorithm analysis) Examples: Selection sorting rules for algorithm analysis discussion of lab – permutation generation.
The Efficiency of Algorithms
Analysis of Algorithms 7/2/2015CS202 - Fundamentals of Computer Science II1.
Analysis of Algorithm.
Lecture 3 Feb 7, 2011 Goals: Chapter 2 (algorithm analysis) Examples: Selection sorting rules for algorithm analysis Image representation Image processing.
Analysis of Algorithms COMP171 Fall Analysis of Algorithms / Slide 2 Introduction * What is Algorithm? n a clearly specified set of simple instructions.
Analysis of Algorithms Spring 2015CS202 - Fundamentals of Computer Science II1.
Algorithm Analysis (Big O)
Analysis of Performance
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.
Program Performance & Asymptotic Notations CSE, POSTECH.
Week 2 CS 361: Advanced Data Structures and Algorithms
Lecture 2 Computational Complexity
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.
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.
Complexity Analysis Chapter 1.
Analysis of Algorithms
CSC 205 Java Programming II Algorithm Efficiency.
Analyzing algorithms & Asymptotic Notation BIO/CS 471 – Algorithms for Bioinformatics.
Coursenotes CS3114: Data Structures and Algorithms Clifford A. Shaffer Department of Computer Science Virginia Tech Copyright ©
Program Efficiency & Complexity Analysis. Algorithm Review An algorithm is a definite procedure for solving a problem in finite number of steps Algorithm.
Algorithm Analysis CS 400/600 – Data Structures. Algorithm Analysis2 Abstract Data Types Abstract Data Type (ADT): a definition for a data type solely.
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.
Computer Science and Software Engineering University of Wisconsin - Platteville 8. Comparison of Algorithms Yan Shi CS/SE 2630 Lecture Notes Part of this.
Introduction to Analysis of Algorithms CS342 S2004.
Algorithm Analysis Part of slides are borrowed from UST.
Asymptotic Performance. Review: Asymptotic Performance Asymptotic performance: How does algorithm behave as the problem size gets very large? Running.
Algorithm Analysis (Big O)
Analysis of Algorithm Lecture 2 Basics of Algorithms and Mathematics
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.
Searching Topics Sequential Search Binary Search.
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.
Analysis of Algorithms Spring 2016CS202 - Fundamentals of Computer Science II1.
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.
GC 211:Data Structures Week 2: Algorithm Analysis Tools Slides are borrowed from Mr. Mohammad Alqahtani.
Chapter 15 Running Time Analysis. Topics Orders of Magnitude and Big-Oh Notation Running Time Analysis of Algorithms –Counting Statements –Evaluating.
1 COMP9024: Data Structures and Algorithms Week Two: Analysis of Algorithms Hui Wu Session 2, 2014
Data Structures & Algorithm CS-102 Lecture 12 Asymptotic Analysis Lecturer: Syeda Nazia Ashraf 1.
Data Structures I (CPCS-204) Week # 2: Algorithm Analysis tools Dr. Omar Batarfi Dr. Yahya Dahab Dr. Imtiaz Khan.
Algorithm Analysis 1.
Chapter 10 Algorithm Efficiency
GC 211:Data Structures Week 2: Algorithm Analysis Tools
Introduction to Algorithms
GC 211:Data Structures Algorithm Analysis Tools
Algorithms Algorithm Analysis.
GC 211:Data Structures Algorithm Analysis Tools
Programming and Data Structure
Analysis of Algorithms
Programming and Data Structure
At the end of this session, learner will be able to:
CS210- Lecture 2 Jun 2, 2005 Announcements Questions
Presentation transcript:

Chapter 2.6 Comparison of Algorithms modified from Clifford A. Shaffer and George Bebis

Which Cost More to Feed? 2

Algorithm Efficiency There are often many approaches (algorithms) to solve a problem. How do we choose between them? At the heart of computer program design are two (sometimes conflicting) goals To design an algorithm that is easy to understand, code, debug. makes efficient use of the resources. 3

Algorithm Efficiency (cont) Goal (1) is the concern of Software Engineering. Goal (2) is the concern of data structures and algorithm analysis. When goal (2) is important, how do we measure an algorithm’s cost? 4

Estimation Techniques Known as “back of the envelope” or “back of the napkin” calculation 1.Determine the major parameters that effect the problem. 2.Derive an equation that relates the parameters to the problem. 3.Select values for the parameters, and apply the equation to yield and estimated solution. 5

Estimation Example How many library bookcases does it take to store books totaling one million pages? Estimate: Pages/inch Feet/shelf Shelves/bookcase 6

Best, Worst, Average Cases Not all inputs of a given size take the same time to run. Sequential search for K in an array of n integers: Begin at first element in array and look at each element in turn until K is found Best case: Worst case: Average case: 7

Time Analysis Provides upper and lower bounds of running time. Different types of analysis: - Worst case - Best case - Average case 8

Worst Case Provides an upper bound on running time. An absolute guarantee that the algorithm would not run longer, no matter what the inputs are. 9

Best Case Provides a lower bound on running time. Input is the one for which the algorithm runs the fastest. 10

Average Case Provides an estimate of “average” running time. Assumes that the input is random. Useful when best/worst cases do not happen very often i.e., few input cases lead to best/worst cases. 11

Which Analysis to Use? While average time appears to be the fairest measure, it may be difficult to determine. When is the worst case time important? 12

How to Measure Efficiency? Critical resources: Time, memory, programmer effort, user effort Factors affecting running time: For most algorithms, running time depends on “size” of the input. Running time is expressed as T(n) for some function T on input size n. 13

How do we analyze an algorithm? Need to define objective measures. (1) Compare execution times? Empirical comparison (run programs) Not good: times are specific to a particular machine. (2) Count the number of statements? Not good: number of statements varies with programming language and programming style. 14

How do we analyze an algorithm? (cont.) (3) Express running time t as a function of problem size n (i.e., t=f(n) ) Asymptotic Algorithm Analysis -Given two algorithms having running times f(n) and g(n), -find which functions grows faster - Such an analysis is independent of machine time, programming style, etc. 15

Comparing algorithms Given two algorithms having running times f(n) and g(n), how do we decide which one is faster? Compare “rates of growth” of f(n) and g(n) 16

Understanding Rate of Growth Consider the example of buying elephants and goldfish: Cost: (cost_of_elephants) + (cost_of_goldfish) Approximation: Cost ~ cost_of_elephants 17

Understanding Rate of Growth (cont’d) The low order terms of a function are relatively insignificant for large n n n n + 50 Approximation: n 4 Highest order term determines rate of growth! 18

Visualizing Orders of Growth On a graph, as you go to the right, a faster growing function eventually becomes larger... f A (n)=30n+8 Increasing n  f B (n)=n 2 +1 Value of function  19

Growth Rate Graph 20

Common orders of magnitude 21

Rate of Growth ≡ Asymptotic Analysis Using rate of growth as a measure to compare different functions implies comparing them asymptotically i.e., as n  If f(x) is faster growing than g(x), then f(x) always eventually becomes larger than g(x) in the limit i.e., for large enough values of x 22

Complexity Let us assume two algorithms A and B that solve the same class of problems. The time complexity of A is 5,000n, the one for B is  1.1 n  for an input with n elements For n = 10, A requires 50,000 steps, but B only 3, so B seems to be superior to A. For n = 1000, A requires 5  10 6 steps, while B requires 2.5  steps. 23

Names of Orders of Magnitude O(1) bounded (by a constant) time O(log 2 N) logarithmic time O(N) linear time O(N*log 2 N) N*log 2 N time O(N 2 ) quadratic time O(N 3 ) cubic time O(2 N ) exponential time 24

N log 2 N N*log 2 N N 2 2 N , * * , *

Sample Execution Times 26

The Growth of Functions A problem that can be solved with polynomial worst-case complexity is called tractable Problems of higher complexity are called intractable Problems that no algorithm can solve are called unsolvable 27

Asymptotic Notation O notation: O notation: asymptotic “less than”: f(n)=O(g(n)) implies: f(n) “≤” c g(n) in the limit * (used in worst-case analysis) * formal definition in CS477/677 c is a constant 28

Asymptotic Notation  notation:  notation: asymptotic “greater than”: f(n)=  (g(n)) implies: f(n) “≥” c g(n) in the limit * (used in best-case analysis) * formal definition in CS477/677 c is a constant 29

Asymptotic Notation  notation:  notation: asymptotic “equality”: f(n)=  (g(n)) implies: f(n) “=” c g(n) in the limit * (provides a tight bound of running time) (best and worst cases are same) * formal definition in CS477/677 c is a constant 30

More on big-O f(n) O(g(n)) if “f(n)≤cg(n)” O(g(n)) is a set of functions f(n) 31

A Common Misunderstanding Confusing worst case with upper bound. Upper bound refers to a growth rate. Worst case refers to the worst input from among the choices for possible inputs of a given size. 32

Algorithm speed vs function growth An O(n 2 ) algorithm will be slower than an O(n) algorithm (for large n). But an O(n 2 ) function will grow faster than an O(n) function. f A (n)=30n+8 Increasing n  f B (n)=n 2 +1 Value of function  33

Faster Computer or Algorithm? Suppose we buy a computer 10 times faster. n: size of input that can be processed in one second on old computer in 1000 computational units n’: size of input that can be processed in one second on new computer T(n)T(n)nn’n’Changen’/nn’/n 10n1001,000n’ = 10n10 10n n’=  10n n 34n’ = n /n 34

How do we find f(n)? (1)Associate a "cost" with each statement (2) Find total number of times each statement is executed (3) Add up the costs 35

i = 0; while (i<N) { X=X+Y; // O(1) result = mystery(X); // O(N) i++; // O(1) } The body of the while loop: O(N) Loop is executed: N times N x O(N) = O(N 2 ) Running Time Examples 36

if (i<j) for ( i=0; i<N; i++ ) X = X+i; else X=0; Max ( O(N), O(1) ) = O (N) O(N) O(1) Running Time Examples (cont.’d) 37

Running Time Examples (cont.’d) Algorithm 1 Cost arr[0] = 0; c 1 arr[1] = 0; c 1 arr[2] = 0; c 1... arr[N-1] = 0; c c 1 +c c 1 = c 1 x N Algorithm 2 Cost for(i=0; i<N; i++) c 2 arr[i] = 0; c (N+1) x c 2 + N x c 1 = (c 2 + c 1 ) x N + c 2 38

Cost sum = 0; c 1 for(i=0; i<N; i++) c 2 for(j=0; j<N; j++) c 2 sum += arr[i][j]; c c 1 + c 2 x (N+1) + c 2 x N x (N+1) + c 3 x N x N 39 Running Time Examples (cont.’d)

Complexity Examples What does the following algorithm compute? int who_knows(int a[n]) { int m = 0; for {int i = 0; i<n; i++} for {int j = i+1; j<n; j++} if ( abs(a[i] – a[j]) > m ) m = abs(a[i] – a[j]); return m; } returns the maximum difference between any two numbers in the input array Comparisons: n-1 + n-2 + n-3 + … + 1 = (n-1)n/2 = 0.5n n Time complexity is O(n 2 ) 40

Complexity Examples Another algorithm solving the same problem: int max_diff(int a[n]) { int min = a[0]; int max = a[0]; for {int i = 1; i<n; i++} if ( a[i] < min ) min = a[i]; else if ( a[i] > max ) max = a[i]; return max-min; } Comparisons: 2n - 2 Time complexity is O(n). 41

The Growth of Functions “Popular” functions g(n) are n log n, log n, 1, 2 n, n 2, n!, n, n 3 Listed from slowest to fastest growth: 1 log n n n log n n 2 n 3 2 n n! 42

Running time of various statements 43

Examples (cont.’d) 44

Examples of Growth Rate Position of largest value in "A“ */ static int largest(int[] A) { int currlarge = 0; // Position of largest for (int i=1; i<A.length; i++) if (A[currlarge] < A[i]) currlarge = i; // Remember position return currlarge; // Return largest position } 45

Examples (cont) sum = 0; for (i=1; i<=n; i++) for (j=1; j<=n; j++) sum++; 46

Time Complexity Examples (1) a = b; This assignment takes constant time, so it is  (1). sum = 0; for (i=1; i<=n; i++) sum += n; 47

Time Complexity Examples (2) sum = 0; for (j=1; j<=n; j++) for (i=1; i<=j; i++) sum++; for (k=0; k<n; k++) A[k] = k; 48

Time Complexity Examples (3) sum1 = 0; for (i=1; i<=n; i++) for (j=1; j<=n; j++) sum1++; sum2 = 0; for (i=1; i<=n; i++) for (j=1; j<=i; j++) sum2++; 49

Time Complexity Examples (4) sum1 = 0; for (k=1; k<=n; k*=2) for (j=1; j<=n; j++) sum1++; sum2 = 0; for (k=1; k<=n; k*=2) for (j=1; j<=k; j++) sum2++; 50

Examples (cont.’d) 51

Analyze the complexity of the following code segments 52