Introduction Algorithms Order Analysis of Algorithm

Slides:



Advertisements
Similar presentations
MATH 224 – Discrete Mathematics
Advertisements

Razdan with contribution from others 1 Algorithm Analysis What is the Big ‘O Bout? Anshuman Razdan Div of Computing.
Chapter 1 – Basic Concepts
the fourth iteration of this loop is shown here
Introduction to Analysis of Algorithms
1 Data Structures A program solves a problem. A program solves a problem. A solution consists of: A solution consists of:  a way to organize the data.
Cmpt-225 Algorithm Efficiency.
Analysis of Algorithms 7/2/2015CS202 - Fundamentals of Computer Science II1.
Analysis of Algorithms COMP171 Fall Analysis of Algorithms / Slide 2 Introduction * What is Algorithm? n a clearly specified set of simple instructions.
Week 2 CS 361: Advanced Data Structures and Algorithms
Lecture 2 Computational Complexity
Mathematics Review and Asymptotic Notation
1 Computer Algorithms Lecture 3 Asymptotic Notation Some of these slides are courtesy of D. Plaisted, UNC and M. Nicolescu, UNR.
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.
Asymptotic Analysis-Ch. 3
Asymptotic Notation (O, Ω, )
Data Structure Introduction.
Chapter 5 Algorithms (2) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Chapter 2 Computational Complexity. Computational Complexity Compares growth of two functions Independent of constant multipliers and lower-order effects.
Algorithm Analysis (Big O)
Searching Topics Sequential Search Binary Search.
CES 592 Theory of Software Systems B. Ravikumar (Ravi) Office: 124 Darwin Hall.
1 Chapter 2 Algorithm Analysis All sections. 2 Complexity Analysis Measures efficiency (time and memory) of algorithms and programs –Can be used for the.
BITS Pilani Pilani Campus Data Structure and Algorithms Design Dr. Maheswari Karthikeyan Lecture1.
1 Chapter 2 Algorithm Analysis Reading: Chapter 2.
Complexity of Algorithms Fundamental Data Structures and Algorithms Ananda Guna January 13, 2005.
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Algorithm efficiency Prudence Wong.
CSE 3358 NOTE SET 2 Data Structures and Algorithms 1.
Algorithmic Foundations COMP108 COMP108 Algorithmic Foundations Algorithm efficiency Prudence Wong
Algorithm Analysis 1.
Chapter 2 Algorithm Analysis
Introduction to Algorithms
Introduction to Algorithms: Asymptotic Notation
Analysis of Algorithms
Analysis of Algorithms
COMP108 Algorithmic Foundations Algorithm efficiency
Analysis of Algorithms
Introduction to Algorithms
CS 3343: Analysis of Algorithms
Growth of functions CSC317.
Analysis of Algorithms
Course Description Algorithms are: Recipes for solving problems.
DATA STRUCTURES Introduction: Basic Concepts and Notations
CS 3343: Analysis of Algorithms
Analysis of Algorithms
Computation.
CSE 421: Introduction to Algorithms
Analysis of Algorithms
Time Complexity Analysis Neil Tang 01/19/2010
Algorithm Analysis Neil Tang 01/22/2008
Asymptotic Notations Algorithms Lecture 9.
Objective of This Course
Analysis of Algorithms
Asymptotic Growth Rate
Analysis of Algorithms
CS 3343: Analysis of Algorithms
Analysis of Algorithms
CS 201 Fundamental Structures of Computer Science
Analysis of Algorithms
Programming and Data Structure
CS200: Algorithms Analysis
Searching, Sorting, and Asymptotic Complexity
Time Complexity Lecture 14 Sec 10.4 Thu, Feb 22, 2007.
Introduction to Algorithms
Math/CSE 1019N: Discrete Mathematics for Computer Science Winter 2007
Course Description Algorithms are: Recipes for solving problems.
Estimating Algorithm Performance
Analysis of Algorithms
Analysis of Algorithms
Presentation transcript:

Introduction Algorithms Order Analysis of Algorithm Some Mathematical Background Young CS 331 D&A of Algo. Topic: Introduction

A simple, unambiguous, mechanical procedure to carry out some task. What is an algorithm? A simple, unambiguous, mechanical procedure to carry out some task.   Why algorithm instead of program? Writing an algorithm is simpler (we don’t need to worry about the detailed implementation, or the language syntax). An algorithm is easier to read than a program written in, for instance, C. Young CS 331 D&A of Algo. Topic: Introduction

How to represent an algorithm? Give a description in your own language, e.g. English, Spanish, … 2. Pseudo code 3. Graphical Young CS 331 D&A of Algo. Topic: Introduction

Example – multiplying two positive integers A and B For example: 45*19   For example: 45*19 Usually: 45 19 (x 405 45 (+ 855 Young CS 331 D&A of Algo. Topic: Introduction

A different algorithm:   Multiplier Multiplicand Result (A/2) (B*2) (pick numbers in column 2 when the corresponding number under the multiplier is odd) 45 19 19 22 38 11 76 76 5 152 152 2 304 1 608 608 (+ 855 Young CS 331 D&A of Algo. Topic: Introduction

An instance of a problem is a specific assignment of values to the parameters. This algorithm can be used for multiplying any two positive integers, we say that (45, 19) is an instance of this problem. Most problems have infinite collection of instances. It’s ok to define the domain (i.e. the set of instances) to be considered, and the algorithm should work for all instances in that domain. Although the above algorithm will not work if the first operand is negative, this does not invalidate the algorithm since (-45, 19) is not an instance of the problem being considered. Young CS 331 D&A of Algo. Topic: Introduction

Order: Usually we use the frequency count to compare algorithms. Consider the following 3 programs: (a) (b) (c) x ← x + y for i ← 1 to n do for i ← 1 to n do x ← x + y for j ← 1 to n do end x ← x + y end The frequency count of stmt x ← x + y is 1, n, n2. No matter which machine we use to run these programs, we know that the execution time of (b) is n times the execution time of (a). Young CS 331 D&A of Algo. Topic: Introduction

Big-O notation:   Def f(n) = O(g(n)) if and only if  2 positive constants c and n0, such that  |f(n)|  c  |g(n)|  n  n0. So, g(n) actually is the upper bound of f(n). n0 Figure 1. Illustrating “big O” Young CS 331 D&A of Algo. Topic: Introduction

Examples: Is 17 n2 – 5 = O(n2)? Is 35 n3 + 100 = O(n3)? Is 6  2n + n2 = O(2n)? Young CS 331 D&A of Algo. Topic: Introduction

Figure 2. Growth rates of some important complexity classes f(n) n! 2n n3 n2 n log n n (linear time) log n n Figure 2. Growth rates of some important complexity classes Young CS 331 D&A of Algo. Topic: Introduction

Assume that we have a machine that can execute 1,000,000 required operations per sec Algorithm 1 Algorithm 2 Algorithm 3 Algorithm 4 Algorithm 5 Frequency count 33n 6nlogn 13n2 3.4n3 2n n=10 n=10,000 < 1 sec 22 min 39 days many many centuries Table 1. Execution time for algorithms with the given time complexities Young CS 331 D&A of Algo. Topic: Introduction

n log n polynomial time (easy or tractable) n2 n3 Note: log n n(linear) n log n polynomial time (easy or tractable) n2 n3   2n n! exponential time (hard or intractable) Young CS 331 D&A of Algo. Topic: Introduction

How do we know a given problem is easy? Give a polynomial time algorithm for the problem  Need to be good in design of algorithms (CS331) analysis of algorithms (CS331) How do we know a given problem is hard? Show that it is as hard as those well-known “hard” problems.  Need help from the theory of NP Completeness (CS331) Young CS 331 D&A of Algo. Topic: Introduction

Whether your program is the best or not? (Comparing algorithms) The problem: Counting the number of 1’s in a n-bit string algorithms: c ← 0; for i ← 1 to n do if bi = 1 then c ← c+1; Complexity: T(n) = O(n) Young CS 331 D&A of Algo. Topic: Introduction

B ← B  (B –1 ); ( Note that  is “logical and” ) Assume B = bnbn-1…b2b1 c ← 0; while B ≠ 0 do c ← c+1; B ← B  (B –1 ); ( Note that  is “logical and” ) Complexity: T(n) = O( # of 1’s) example: B = 100011 c ← 1 100011 B ) 100010 B-1 c ← 2 100010 B’ ) 100001 B’-1 c ← 3 100000 B’’ ) 011111 B’’-1 000000 B’’’ Young CS 331 D&A of Algo. Topic: Introduction

Can we do it in log n time? B = 11010001 b8 b7 b6 b5 b4 b3 b2 b1 B 1 1 0 1 0 0 0 1 Odd Shift even to right B1 = Bodd + Beven 1 1 0 1 1 0 0 0 10 01 00 01 B2 = Bodd + Beven 01 01 10 00 0011 0001 B3 = Bodd + Beven 0001 0011 0100   Young CS 331 D&A of Algo. Topic: Introduction

- The familiar machine that we used can only execute one Idea: 11010001   1101 0001 ==> T(n) = O(logn) 11 01 00 01   1 1 0 1 0 0 0 1 4 1 3 2 1 1 Note: - The familiar machine that we used can only execute one operation in each step  sequential machine. This stated algorithm requires the machine to have more than one operation done in each step  parallel machine Young CS 331 D&A of Algo. Topic: Introduction

Def iff  two positive constants c and n0, such that Ω notation Def iff  two positive constants c and n0, such that So, g(n) is the lower bound of f(n). n0 Figure 3. Illustrating Ω Young CS 331 D&A of Algo. Topic: Introduction

Examples: Is ? value of n0 Is ? When n is bigger, 2n will grow faster than n100. ( Yes, you can find n0 ) Young CS 331 D&A of Algo. Topic: Introduction

such that n0 Figure 4. Illustrating Θ Θ notation Def iff  three positive constants, c1, c2, n0 , such that n0 Figure 4. Illustrating Θ Young CS 331 D&A of Algo. Topic: Introduction

Examples: Is 3n + 2 = (n)? Is 3n + 2 = (n2)? Young CS 331 D&A of Algo. Topic: Introduction

Is ? Is ? Young CS 331 D&A of Algo. Topic: Introduction

Property of Order Transitive: If and then Reflexive: Young CS 331 D&A of Algo. Topic: Introduction

Symmetric: iff Young CS 331 D&A of Algo. Topic: Introduction

Analysis of Algorithms Best Case, Worse Case Analysis The problem:  Sort n keys in nondecreasing sequence.   Solving strategy: Insertion sort – insert the ith item into a sorted list of length (i – 1) by looking at numbers one at a time,  i >1.   Example: sort 3,5,4,1 step 1 step 2 step 3 step 4 3 3 3 1 5 5 4 3   4 4 5 4 1 1 1 5 Young CS 331 D&A of Algo. Topic: Introduction

A(0) ← -maxint; // for efficient to stop the loop for i ← 2 to n do Algorithm:   A(0) ← -maxint; // for efficient to stop the loop for i ← 2 to n do target ← A(i); j ← i –1; while (target < A(j)) A( j + 1) ← A(j); j ← j –1; A( j + 1) ← target; Young CS 331 D&A of Algo. Topic: Introduction

Worst Case performance is Θ(n2) or O(n2) Analysis:   Best Case performance is Θ(n) or Ω(n), but not Ω(n2) since insertion sort runs in Θ(n) when the input is sorted. Worst Case performance is Θ(n2) or O(n2) The running time of insertion sort is between Ω(n) to O(n2) The running time is bound to O(n2) Young CS 331 D&A of Algo. Topic: Introduction

Is the key x in the array S of n keys? Solving strategy: Average Case Analysis The problem: Is the key x in the array S of n keys?   Solving strategy:  Sequential search Young CS 331 D&A of Algo. Topic: Introduction

Procedure search ( n, S, x, location) // n is total # of keys, Algorithm: Procedure search ( n, S, x, location) // n is total # of keys, S is an array, x is the key, location is output parameter begin location ← 1; while (location ≤ n) and (S[location] ≠ x) location ++; if location > n location ← 0; end; Young CS 331 D&A of Algo. Topic: Introduction

Average Case Analysis: When ‘x is in the array’, we assume that   When ‘x is in the array’, we assume that Probability prob When x = kth, # of key comparisons = k about half array is searched. Young CS 331 D&A of Algo. Topic: Introduction

When ‘x may not be in the array’ Assume prob (x in array) = p, prob (x not in array) = 1 – p, and it takes n comparisons to know that ‘is not in the array’ Young CS 331 D&A of Algo. Topic: Introduction

If p = 1, (as calculated in case (1)) If , (about ¾ of the array is searched) Young CS 331 D&A of Algo. Topic: Introduction

Design of Algorithms Divide-and-Conquer Greedy Dynamic Programming Backtracking & Branch-and-Bound Young CS 331 D&A of Algo. Topic: Introduction

Some mathematical background Definition. Logb x = y if b y = x b > 1 Logb is a strictly increasing function, if x1 < x2 then Logb x1 < Logb x2 . Logb is a one-to-one function, if Logb x1 = Logb x2 then x1 = x2 . Logb 1 = 0 b Logb xa = a  Logb x Logb(x1  x2) = Logb x1 + Logb x2 Young CS 331 D&A of Algo. Topic: Introduction

to convert from one base to another, sum of consecutive integers x1Logb x2 = x2Logb x1 to convert from one base to another, sum of consecutive integers geometric sums Suppose f is a continuous, decreasing function, a, b are integers, then Young CS 331 D&A of Algo. Topic: Introduction

Suppose f is a continuous, increasing function, a, b are integers, then Note: Log2 = Lg Loge = Ln Young CS 331 D&A of Algo. Topic: Introduction