Analysis of Algorithms COMP171 Fall 2006. Analysis of Algorithms / Slide 2 Introduction * What is Algorithm? n a clearly specified set of simple instructions.

Slides:



Advertisements
Similar presentations
CSCE 2100: Computing Foundations 1 Running Time of Programs
Advertisements

CSE 373: Data Structures and Algorithms Lecture 5: Math Review/Asymptotic Analysis III 1.
Razdan with contribution from others 1 Algorithm Analysis What is the Big ‘O Bout? Anshuman Razdan Div of Computing.
Chapter 1 – Basic Concepts
Fall 2006CENG 7071 Algorithm Analysis. Fall 2006CENG 7072 Algorithmic Performance There are two aspects of algorithmic performance: Time Instructions.
Introduction to Analysis of Algorithms
Analysis of Algorithms Review COMP171 Fall 2005 Adapted from Notes of S. Sarkar of UPenn, Skiena of Stony Brook, etc.
Algorithm Analysis. Analysis of Algorithms / Slide 2 Introduction * Data structures n Methods of organizing data * What is Algorithm? n a clearly specified.
Algorithm Analysis. Math Review – 1.2 Exponents –X A X B = X A+B –X A /X B =X A-B –(X A ) B = X AB –X N +X N = 2X N ≠ X 2N –2 N+ 2 N = 2 N+1 Logarithms.
Algorithm Analysis CS 201 Fundamental Structures of Computer Science.
CSC 2300 Data Structures & Algorithms January 26, 2007 Chapter 2. Algorithm Analysis.
Data Structure Algorithm Analysis TA: Abbas Sarraf
Analysis of Algorithms 7/2/2015CS202 - Fundamentals of Computer Science II1.
Cpt S 223 – Advanced Data Structures
Summary of Algo Analysis / Slide 1 Algorithm complexity * Bounds are for the algorithms, rather than programs n programs are just implementations of an.
© 2006 Pearson Addison-Wesley. All rights reserved10 A-1 Chapter 10 Algorithm Efficiency and Sorting.
Analysis of Algorithms Spring 2015CS202 - Fundamentals of Computer Science II1.
Insertion Sort CSE 331 Section 2 James Daly. Insertion Sort Basic idea: keep a sublist sorted, then add new items into the correct place to keep it sorted.
Algorithm Analysis (Big O)
CSE373: Data Structures and Algorithms Lecture 4: Asymptotic Analysis Aaron Bauer Winter 2014.
Chapter 6 Algorithm Analysis Bernard Chen Spring 2006.
Asymptotic Notations Iterative Algorithms and their analysis
Week 2 CS 361: Advanced Data Structures and Algorithms
For Wednesday Read Weiss chapter 3, sections 1-5. This should be largely review. If you’re struggling with the C++ aspects, you may refer to Savitch, chapter.
1 Chapter 24 Developing Efficient Algorithms. 2 Executing Time Suppose two algorithms perform the same task such as search (linear search vs. binary search)
Data Structures and Algorithms Lecture 5 and 6 Instructor: Quratulain Date: 15 th and 18 th September, 2009 Faculty of Computer Science, IBA.
Algorithm Efficiency CS 110: Data Structures and Algorithms First Semester,
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.
Iterative Algorithm Analysis & Asymptotic Notations
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 Algorithms
CS 221 Analysis of Algorithms Instructor: Don McLaughlin.
1 COMP3040 Tutorial 1 Analysis of algorithms. 2 Outline Motivation Analysis of algorithms Examples Practice questions.
CMPT 438 Algorithms. Why Study Algorithms? Necessary in any computer programming problem ▫Improve algorithm efficiency: run faster, process more data,
Introduction to Analysis of Algorithms COMP171 Fall 2005.
Program Efficiency & Complexity Analysis. Algorithm Review An algorithm is a definite procedure for solving a problem in finite number of steps Algorithm.
Chapter 10 Algorithm Analysis.  Introduction  Generalizing Running Time  Doing a Timing Analysis  Big-Oh Notation  Analyzing Some Simple Programs.
Geoff Holmes and Bernhard Pfahringer COMP206-08S General Programming 2.
CSC – 332 Data Structures Generics Analysis of Algorithms Dr. Curry Guinn.
Algorithmic Analysis Charl du Plessis and Robert Ketteringham.
1 Asymptotic Notations Iterative Algorithms and their analysis Asymptotic Notations –Big O,  Notations Review of Discrete Math –Summations –Logarithms.
CE 221 Data Structures and Algorithms Chapter 2: Algorithm Analysis - I Text: Read Weiss, §2.1 – Izmir University of Economics.
Algorithm Analysis Part of slides are borrowed from UST.
CSC Devon M. Simmonds University of North Carolina, Wilmington CSC231 Data Structures.
1/6/20161 CS 3343: Analysis of Algorithms Lecture 2: Asymptotic Notations.
Algorithm Analysis (Big O)
CS 150: Analysis of Algorithms. Goals for this Unit Begin a focus on data structures and algorithms Understand the nature of the performance of algorithms.
Algorithm Analysis. What is an algorithm ? A clearly specifiable set of instructions –to solve a problem Given a problem –decide that the algorithm is.
E.G.M. PetrakisAlgorithm Analysis1  Algorithms that are equally correct can vary in their utilization of computational resources  time and memory  a.
Big O David Kauchak cs302 Spring Administrative Assignment 1: how’d it go? Assignment 2: out soon… Lab code.
Vishnu Kotrajaras, PhD.1 Data Structures
1 Chapter 2 Algorithm Analysis All sections. 2 Complexity Analysis Measures efficiency (time and memory) of algorithms and programs –Can be used for the.
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.
CSE 3358 NOTE SET 2 Data Structures and Algorithms 1.
Algorithm Complexity is concerned about how fast or slow particular algorithm performs.
LECTURE 9 CS203. Execution Time Suppose two algorithms perform the same task such as search (linear search vs. binary search) and sorting (selection sort.
Data Structures I (CPCS-204) Week # 2: Algorithm Analysis tools Dr. Omar Batarfi Dr. Yahya Dahab Dr. Imtiaz Khan.
GC 211:Data Structures Week 2: Algorithm Analysis Tools
GC 211:Data Structures Algorithm Analysis Tools
Algorithm Analysis CSE 2011 Winter September 2018.
Algorithm Analysis (not included in any exams!)
CS 201 Fundamental Structures of Computer Science
CE 221 Data Structures and Algorithms
CE 221 Data Structures and Algorithms
Estimating Algorithm Performance
Presentation transcript:

Analysis of Algorithms COMP171 Fall 2006

Analysis of Algorithms / Slide 2 Introduction * What is Algorithm? n a clearly specified set of simple instructions to be followed to solve a problem  Takes a set of values, as input and  produces a value, or set of values, as output n May be specified  In English  As a computer program  As a pseudo-code * Data structures n Methods of organizing data * Program = algorithms + data structures

Analysis of Algorithms / Slide 3 Introduction * Why need algorithm analysis ? n writing a working program is not good enough n The program may be inefficient! n If the program is run on a large data set, then the running time becomes an issue

Analysis of Algorithms / Slide 4 Example: Selection Problem * Given a list of N numbers, determine the kth largest, where k  N. * Algorithm 1: (1) Read N numbers into an array (2) Sort the array in decreasing order by some simple algorithm (3) Return the element in position k

Analysis of Algorithms / Slide 5 Example: Selection Problem… * Algorithm 2: (1) Read the first k elements into an array and sort them in decreasing order (2) Each remaining element is read one by one  If smaller than the kth element, then it is ignored  Otherwise, it is placed in its correct spot in the array, bumping one element out of the array. (3) The element in the kth position is returned as the answer.

Analysis of Algorithms / Slide 6 Example: Selection Problem… * Which algorithm is better when n N =100 and k = 100? n N =100 and k = 1? * What happens when N = 1,000,000 and k = 500,000? * There exist better algorithms

Analysis of Algorithms / Slide 7 Algorithm Analysis * We only analyze correct algorithms * An algorithm is correct n If, for every input instance, it halts with the correct output * Incorrect algorithms n Might not halt at all on some input instances n Might halt with other than the desired answer * Analyzing an algorithm n Predicting the resources that the algorithm requires n Resources include  Memory  Communication bandwidth  Computational time (usually most important)

Analysis of Algorithms / Slide 8 Algorithm Analysis… * Factors affecting the running time n computer n compiler n algorithm used n input to the algorithm  The content of the input affects the running time  typically, the input size (number of items in the input) is the main consideration l E.g. sorting problem  the number of items to be sorted l E.g. multiply two matrices together  the total number of elements in the two matrices * Machine model assumed n Instructions are executed one after another, with no concurrent operations  Not parallel computers

Analysis of Algorithms / Slide 9 Example * Calculate * Lines 1 and 4 count for one unit each * Line 3: executed N times, each time four units * Line 2: (1 for initialization, N+1 for all the tests, N for all the increments) total 2N + 2 * total cost: 6N + 4  O(N) N+2 4N 1

Analysis of Algorithms / Slide 10 Worst- / average- / best-case * Worst-case running time of an algorithm n The longest running time for any input of size n n An upper bound on the running time for any input  guarantee that the algorithm will never take longer n Example: Sort a set of numbers in increasing order; and the data is in decreasing order n The worst case can occur fairly often  E.g. in searching a database for a particular piece of information * Best-case running time n sort a set of numbers in increasing order; and the data is already in increasing order * Average-case running time n May be difficult to define what “average” means

Analysis of Algorithms / Slide 11 Running-time of algorithms * Bounds are for the algorithms, rather than programs n programs are just implementations of an algorithm, and almost always the details of the program do not affect the bounds * Bounds are for algorithms, rather than problems n A problem can be solved with several algorithms, some are more efficient than others

Analysis of Algorithms / Slide 12 Growth Rate * The idea is to establish a relative order among functions for large n *  c, n 0 > 0 such that f(N)  c g(N) when N  n 0 * f(N) grows no faster than g(N) for “large” N

Analysis of Algorithms / Slide 13 Asymptotic notation: Big-Oh * f(N) = O(g(N)) * There are positive constants c and n 0 such that f(N)  c g(N) when N  n 0 * The growth rate of f(N) is less than or equal to the growth rate of g(N) * g(N) is an upper bound on f(N)

Analysis of Algorithms / Slide 14 Big-Oh: example * Let f(N) = 2N 2. Then n f(N) = O(N 4 ) n f(N) = O(N 3 ) n f(N) = O(N 2 ) (best answer, asymptotically tight) * O(N 2 ): reads “order N-squared” or “Big-Oh N-squared”

Analysis of Algorithms / Slide 15 Big Oh: more examples * N 2 / 2 – 3N = O(N 2 ) * 1 + 4N = O(N) * 7N N + 3 = O(N 2 ) = O(N 3 ) * log 10 N = log 2 N / log 2 10 = O(log 2 N) = O(log N) * sin N = O(1); 10 = O(1), = O(1) * * log N + N = O(N) * log k N = O(N) for any constant k * N = O(2 N ), but 2 N is not O(N) * 2 10N is not O(2 N )

Analysis of Algorithms / Slide 16 Math Review: logarithmic functions

Analysis of Algorithms / Slide 17 Some rules When considering the growth rate of a function using Big-Oh * Ignore the lower order terms and the coefficients of the highest-order term * No need to specify the base of logarithm n Changing the base from one constant to another changes the value of the logarithm by only a constant factor * If T 1 (N) = O(f(N) and T 2 (N) = O(g(N)), then n T 1 (N) + T 2 (N) = max(O(f(N)), O(g(N))), n T 1 (N) * T 2 (N) = O(f(N) * g(N))

Analysis of Algorithms / Slide 18 Big-Omega *  c, n 0 > 0 such that f(N)  c g(N) when N  n 0 * f(N) grows no slower than g(N) for “large” N

Analysis of Algorithms / Slide 19 Big-Omega * f(N) =  (g(N)) * There are positive constants c and n 0 such that f(N)  c g(N) when N  n 0 * The growth rate of f(N) is greater than or equal to the growth rate of g(N).

Analysis of Algorithms / Slide 20 Big-Omega: examples * Let f(N) = 2N 2. Then n f(N) =  (N) n f(N) =  (N 2 ) (best answer)

Analysis of Algorithms / Slide 21 f(N) =  (g(N)) * the growth rate of f(N) is the same as the growth rate of g(N)

Analysis of Algorithms / Slide 22 Big-Theta * f(N) =  (g(N)) iff f(N) = O(g(N)) and f(N) =  (g(N)) * The growth rate of f(N) equals the growth rate of g(N) * Example: Let f(N)=N 2, g(N)=2N 2 n Since f(N) = O(g(N)) and f(N) =  (g(N)), thus f(N) =  (g(N)). * Big-Theta means the bound is the tightest possible.

Analysis of Algorithms / Slide 23 Some rules * If T(N) is a polynomial of degree k, then T(N) =  (N k ). * For logarithmic functions, T(log m N) =  (log N).

Analysis of Algorithms / Slide 24 Typical Growth Rates

Analysis of Algorithms / Slide 25 Growth rates … * Doubling the input size n f(N) = c  f(2N) = f(N) = c n f(N) = log N  f(2N) = f(N) + log 2 n f(N) = N  f(2N) = 2 f(N) n f(N) = N 2  f(2N) = 4 f(N) n f(N) = N 3  f(2N) = 8 f(N) n f(N) = 2 N  f(2N) = f 2 (N) * Advantages of algorithm analysis n To eliminate bad algorithms early n pinpoints the bottlenecks, which are worth coding carefully

Analysis of Algorithms / Slide 26 Using L' Hopital's rule * L' Hopital's rule n If and then = * Determine the relative growth rates (using L' Hopital's rule if necessary) n compute n if 0: f(N) = O(g(N)) and f(N) is not  (g(N)) n if constant  0: f(N) =  (g(N)) n if  : f(N) =  (f(N)) and f(N) is not  (g(N)) n limit oscillates: no relation

Analysis of Algorithms / Slide 27 General Rules * For loops n at most the running time of the statements inside the for-loop (including tests) times the number of iterations. * Nested for loops n the running time of the statement multiplied by the product of the sizes of all the for-loops. n O(N 2 )

Analysis of Algorithms / Slide 28 General rules (cont’d) * Consecutive statements n These just add n O(N) + O(N 2 ) = O(N 2 ) * If S1 Else S2 n never more than the running time of the test plus the larger of the running times of S1 and S2.

Analysis of Algorithms / Slide 29 Another Example * Maximum Subsequence Sum Problem * Given (possibly negative) integers A 1, A 2,...., A n, find the maximum value of n For convenience, the maximum subsequence sum is 0 if all the integers are negative * E.g. for input –2, 11, -4, 13, -5, -2 n Answer: 20 (A 2 through A 4 )

Analysis of Algorithms / Slide 30 Algorithm 1: Simple * Exhaustively tries all possibilities (brute force) * O(N 3 )

Analysis of Algorithms / Slide 31 Algorithm 2: Divide-and-conquer * Divide-and-conquer n split the problem into two roughly equal subproblems, which are then solved recursively n patch together the two solutions of the subproblems to arrive at a solution for the whole problem  The maximum subsequence sum can be  Entirely in the left half of the input  Entirely in the right half of the input  It crosses the middle and is in both halves

Analysis of Algorithms / Slide 32 Algorithm 2 (cont’d) * The first two cases can be solved recursively * For the last case: n find the largest sum in the first half that includes the last element in the first half n the largest sum in the second half that includes the first element in the second half n add these two sums together

Analysis of Algorithms / Slide 33 Algorithm 2 … O(1) T(m/2) O(m) O(1) T(m/2)

Analysis of Algorithms / Slide 34 Algorithm 2 (cont’d) * Recurrence equation n 2 T(N/2): two subproblems, each of size N/2 n N: for “patching” two solutions to find solution to whole problem

Analysis of Algorithms / Slide 35 Algorithm 2 (cont’d) * Solving the recurrence: * With k=log N (i.e. 2 k = N), we have * Thus, the running time is O(N log N)  faster than Algorithm 1 for large data sets