Algorithm Analysis (Algorithm Complexity). Correctness is Not Enough It isn’t sufficient that our algorithms perform the required tasks. We want them.

Slides:



Advertisements
Similar presentations
Analysis of Algorithms
Advertisements

HST 952 Computing for Biomedical Scientists Lecture 10.
Razdan with contribution from others 1 Algorithm Analysis What is the Big ‘O Bout? Anshuman Razdan Div of Computing.
Analysys & Complexity of Algorithms Big Oh Notation.
the fourth iteration of this loop is shown here
Algorithmic Complexity Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
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
Cmpt-225 Algorithm Efficiency.
CS3381 Des & Anal of Alg ( SemA) City Univ of HK / Dept of CS / Helena Wong 2. Analysis of Algorithms - 1 Analysis.
Lecture 3 Aug 31, 2011 Goals: Chapter 2 (algorithm analysis) Examples: Selection sorting rules for algorithm analysis discussion of lab – permutation generation.
Analysis of Algorithm.
Elementary Data Structures and Algorithms
Lecture 3 Feb 7, 2011 Goals: Chapter 2 (algorithm analysis) Examples: Selection sorting rules for algorithm analysis Image representation Image processing.
© 2006 Pearson Addison-Wesley. All rights reserved10 A-1 Chapter 10 Algorithm Efficiency and Sorting.
Algorithm Analysis (Big O)
Algorithm Cost Algorithm Complexity. Algorithm Cost.
COMP s1 Computing 2 Complexity
COMPSCI 102 Introduction to Discrete Mathematics.
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
SEARCHING, SORTING, AND ASYMPTOTIC COMPLEXITY Lecture 12 CS2110 – Fall 2009.
Introduction to complexity. 2 Analysis of Algorithms Why do we need to analyze algorithms? –To measure the performance –Comparison of different algorithms.
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.
CS 3343: Analysis of Algorithms
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
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.
1 Introduction to Data Structures. 2 Course Name : Data Structure (CSI 221) Course Teacher : Md. Zakir Hossain Lecturer, Dept. of Computer Science Stamford.
 DATA STRUCTURE DATA STRUCTURE  DATA STRUCTURE OPERATIONS DATA STRUCTURE OPERATIONS  BIG-O NOTATION BIG-O NOTATION  TYPES OF DATA STRUCTURE TYPES.
Computation, Complexity, and Algorithm IST 501 Fall 2014 Dongwon Lee, Ph.D.
Asymptotic Notation (O, Ω, )
Program Efficiency & Complexity Analysis. Algorithm Review An algorithm is a definite procedure for solving a problem in finite number of steps Algorithm.
CSC 211 Data Structures Lecture 13
Data Structure Introduction.
Chapter 18: Searching and Sorting Algorithms. Objectives In this chapter, you will: Learn the various search algorithms Implement sequential and binary.
Chapter 5 Algorithms (2) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Java Methods Big-O Analysis of Algorithms Object-Oriented Programming
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.
Introduction to Analysis of Algorithms CS342 S2004.
1 Algorithms  Algorithms are simply a list of steps required to solve some particular problem  They are designed as abstractions of processes carried.
Big-O. Algorithm Analysis Exact analysis: produce a function f(n) measuring how many basic steps are needed for a given inputs n On any input of size.
Computation, Complexity, and Algorithm IST 512 Spring 2012 Dongwon Lee, Ph.D.
Asymptotic Notations By Er. Devdutt Baresary. Introduction In mathematics, computer science, and related fields, big O notation describes the limiting.
1/6/20161 CS 3343: Analysis of Algorithms Lecture 2: Asymptotic Notations.
Algorithm Analysis (Big O)
Scalability for Search Scaling means how a system must grow if resources or work grows –Scalability is the ability of a system, network, or process, to.
Searching Topics Sequential Search Binary Search.
Search Algorithms Written by J.J. Shepherd. Sequential Search Examines each element one at a time until the item searched for is found or not found Simplest.
Big O David Kauchak cs302 Spring Administrative Assignment 1: how’d it go? Assignment 2: out soon… Lab code.
BITS Pilani Pilani Campus Data Structure and Algorithms Design Dr. Maheswari Karthikeyan Lecture1.
1 Chapter 2 Algorithm Analysis Reading: Chapter 2.
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.
CSE 3358 NOTE SET 2 Data Structures and Algorithms 1.
Algorithm Analysis 1.
Analysis of Algorithms
Last time More and more information born digital
Scalability for Search
David Kauchak CS52 – Spring 2015
Algorithm design and Analysis
Scalability for Search and Big O
Introduction to Algorithms Analysis
Analysys & Complexity of Algorithms
Algorithm Efficiency and Sorting
Searching, Sorting, and Asymptotic Complexity
David Kauchak cs161 Summer 2009
Presentation transcript:

Algorithm Analysis (Algorithm Complexity)

Correctness is Not Enough It isn’t sufficient that our algorithms perform the required tasks. We want them to do so efficiently, making the best use of –Space (Storage) –Time (How long will it take, Number of instructions)

Time and Space Time –Instructions take time. –How fast does the algorithm perform? –What affects its runtime? Space –Data structures take space. –What kind of data structures can be used? –How does the choice of data structure affect the runtime?

Time vs. Space Very often, we can trade space for time: For example: maintain a collection of students’ with SSN information. –Use an array of a billion elements and have immediate access (better time) –Use an array of 100 elements and have to search (better space)

The Right Balance The best solution uses a reasonable mix of space and time. –Select effective data structures to represent your data model. –Utilize efficient methods on these data structures.

Measuring the Growth of Work While it is possible to measure the work done by an algorithm for a given set of input, we need a way to: –Measure the rate of growth of an algorithm based upon the size of the input –Compare algorithms to determine which is better for the situation

7 Worst-Case Analysis Worst case running time –Obtain bound on largest possible running time of algorithm on input of a given size N –Generally captures efficiency in practice We will focus on the Worst-Case when analyzing algorithms

Example I: Linear Search Worst Case Worst Case: match with the last item (or no match) target = 32 Worst Case: N comparisons

Example II: Binary Search Worst Case Worst Case: divide until reach one item, or no match, How many comparisons??

Example II: Binary Search Worst Case With each comparison we throw away ½ of the list N N/2 N/4 N/8 1 ………… 1 comparison ………… 1 comparison ………… 1 comparison ………… 1 comparison ………… 1 comparison Worst Case: Number of Steps is: Log 2 N

In General Assume the initial problem size is N If you reduce the problem size in each step by factor k –Then, the max steps to reach size 1  Log k N If in each step you do amount of work  α –Then, the total amount of work is (α Log k N) In Binary Search -Factor k = 2, then we have Log 2 N -In each step, we do one comparison (1) -Total : Log 2 N

Example III: Insertion Sort Worst Case Worst Case: Input array is sorted in reverse order In each iteration i, we do i comparisons. Total : N(N-1) comparisons

Order Of Growth Log NN2N2N N2N2 N3N3 N! Logarithmic Polynomial Exponential More efficient Less efficient (infeasible for large N)

14 Why It Matters For small input size (N)  It does not matter For large input size (N)  it makes all the difference

Order of Growth

Worst-Case Polynomial-Time An algorithm is efficient if its running time is polynomial. Justification: It really works in practice! –Although 6.02   N 20 is technically poly-time, it would be useless in practice. –In practice, the poly-time algorithms that people develop almost always have low constants and low exponents. –Even N 2 with very large N is infeasible

Input size N objects

Introducing Big O Will allow us to evaluate algorithms. Has precise mathematical definition Used in a sense to put algorithms into families LB

Why Use Big-O Notation Used when we only know the asymptotic upper bound. If you are not guaranteed certain input, then it is a valid upper bound that even the worst- case input will be below. May often be determined by inspection of an algorithm. Thus we don’t have to do a proof!

Size of Input In analyzing rate of growth based upon size of input, we’ll use a variable –For each factor in the size, use a new variable –N is most common… Examples: –A linked list of N elements –A 2D array of N x M elements –2 Lists of size N and M elements –A Binary Search Tree of N elements

Formal Definition For a given function g(n), O(g(n)) is defined to be the set of functions O(g(n)) = {f(n) : there exist positive constants c and n 0 such that 0  f(n)  cg(n) for all n  n 0 }

Visual O() Meaning f(n) cg(n) n0n0 f(n) = O(g(n)) Size of input Work done Our Algorithm Upper Bound

Simplifying O() Answers (Throw-Away Math!) We say 3n = O(n 2 )  drop constants! because we can show that there is a n 0 and a c such that: 0  3n  cn 2 for n  n 0 i.e. c = 4 and n 0 = 2 yields: 0  3n  4n 2 for n  2

Correct but Meaningless You could say 3n = O(n 6 ) or 3n = O(n 7 ) But this is like answering: What’s the world record for the mile? –Less than 3 days. How long does it take to drive to Chicago? –Less than 11 years. O (n 2 )

Comparing Algorithms Now that we know the formal definition of O() notation (and what it means)… If we can determine the O() of algorithms… This establishes the worst they perform. Thus now we can compare them and see which has the “better” performance.

Comparing Factors N log N N2N2 1 Size of input Work done

Do not get confused: O-Notation O(1) or “Order One” –Does not mean that it takes only one operation –Does mean that the work doesn’t change as N changes –Is notation for “constant work” O(N) or “Order N” –Does not mean that it takes N operations –Does mean that the work changes in a way that is proportional to N –Is a notation for “work grows at a linear rate”

Complex/Combined Factors Algorithms typically consist of a sequence of logical steps/sections We need a way to analyze these more complex algorithms… It’s easy – analyze the sections and then combine them!

Example: Insert in a Sorted Linked List Insert an element into an ordered list… –Find the right location –Do the steps to create the node and add it to the list head // Inserting 75 Step 1: find the location = O(N)

Example: Insert in a Sorted Linked List Insert an element into an ordered list… –Find the right location –Do the steps to create the node and add it to the list head // Step 2: Do the node insertion = O(1) 75

Combine the Analysis Find the right location = O(N) Insert Node = O(1) Sequential, so add: –O(N) + O(1) = O(N + 1) = Only keep dominant factor O(N)

Example: Search a 2D Array Search an unsorted 2D array (row, then column) –Traverse all rows –For each row, examine all the cells (changing columns) Row Column O(N)

Example: Search a 2D Array Search an unsorted 2D array (row, then column) –Traverse all rows –For each row, examine all the cells (changing columns) Row Column O(M)

Combine the Analysis Traverse rows = O(N) –Examine all cells in row = O(M) Embedded, so multiply: –O(N) x O(M) = O(N*M)

Sequential Steps If steps appear sequentially (one after another), then add their respective O(). loop... endloop loop... endloop N M O(N + M)

Embedded Steps If steps appear embedded (one inside another), then multiply their respective O(). loop... endloop MN O(N*M)

Correctly Determining O() Can have multiple factors: –O(N*M) –O(logP + N 2 ) But keep only the dominant factors: –O(N + NlogN)  –O(N*M + P)  –O(V 2 + VlogV)  Drop constants: –O(2N + 3N 2 )  O(NlogN) remains the same O(V 2 )  O(N 2 ) O(N + N 2 )

Summary We use O() notation to discuss the rate at which the work of an algorithm grows with respect to the size of the input. O() is an upper bound, so only keep dominant terms and drop constants