CS 3343: Analysis of Algorithms

Slides:



Advertisements
Similar presentations
Analysis of Algorithms
Advertisements

 The running time of an algorithm as input size approaches infinity is called the asymptotic running time  We study different notations for asymptotic.
Asymptotic Growth Rate
Cutler/HeadGrowth of Functions 1 Asymptotic Growth Rate.
Data Structures, Spring 2004 © L. Joskowicz 1 Data Structures – LECTURE 3 Recurrence equations Formulating recurrence equations Solving recurrence equations.
Data Structures, Spring 2006 © L. Joskowicz 1 Data Structures – LECTURE 3 Recurrence equations Formulating recurrence equations Solving recurrence equations.
25 June 2015Comp 122, Spring 2004 Asymptotic Notation, Review of Functions & Summations.
Data Structures and Algorithms1 Basics -- 2 From: Data Structures and Their Algorithms, by Harry R. Lewis and Larry Denenberg (Harvard University: Harper.
1 ©2008 DEEDS Group Introduction to Computer Science 2 - SS 08 Asymptotic Complexity Introduction in Computer Science 2 Asymptotic Complexity DEEDS Group.
Mathematics Review and Asymptotic Notation
CS 3343: Analysis of Algorithms
Design and Analysis of Algorithms - Chapter 21 Analysis of Algorithms b Issues: CorrectnessCorrectness Time efficiencyTime efficiency Space efficiencySpace.
10/13/20151 CS 3343: Analysis of Algorithms Lecture 9: Review for midterm 1 Analysis of quick sort.
Asymptotic Analysis-Ch. 3
Algorithms Growth of Functions. Some Notation NNatural numbers RReal numbers N + Positive natural numbers R + Positive real numbers R * Non-negative real.
Algorithm Analysis CS 400/600 – Data Structures. Algorithm Analysis2 Abstract Data Types Abstract Data Type (ADT): a definition for a data type solely.
Chapter 5 Algorithms (2) Introduction to CS 1 st Semester, 2015 Sanghyun Park.
David Luebke 1 1/6/2016 CS 332: Algorithms Asymptotic Performance.
1/6/20161 CS 3343: Analysis of Algorithms Lecture 2: Asymptotic Notations.
Asymptotic Notation Faculty Name: Ruhi Fatima
Asymptotic Complexity
CMPT 438 Algorithms.
Analysis of Algorithms
Theoretical analysis of time efficiency
Analysis of Algorithms
Analysis of Algorithms CS 477/677
Analysis of algorithms
COMP9024: Data Structures and Algorithms
Introduction to Algorithms: Asymptotic Notation
COMP9024: Data Structures and Algorithms
CS 3343: Analysis of Algorithms
nalisis de lgoritmos A A
Introduction to Algorithms
CS 3343: Analysis of Algorithms
Algorithms Algorithm Analysis.
Analysis of algorithms
Analysis of Algorithms
COMP9024: Data Structures and Algorithms
David Kauchak CS52 – Spring 2015
Analysis of Algorithms
Chapter 2 Fundamentals of the Analysis of Algorithm Efficiency
CS 3343: Analysis of Algorithms
Analysis of Algorithms
Analysis of Algorithms
CS 3343: Analysis of Algorithms
CS 3343: Analysis of Algorithms
Analysis of Algorithms
CS 3343: Analysis of Algorithms
CSC 413/513: Intro to Algorithms
Analysis of Algorithms
Introduction to Algorithms Analysis
Asymptotic Growth Rate
Analysis of Algorithms
Analysis of Algorithms
Advanced Analysis of Algorithms
Analysis of Algorithms
CSE 373 Data Structures Lecture 5
Fundamentals of the Analysis of Algorithm Efficiency
Mathematical Background 2
Intro to Data Structures
CSC 321: Data Structures Fall 2012
Advanced Algorithms Analysis and Design
At the end of this session, learner will be able to:
Analysis of algorithms
Fundamentals of the Analysis of Algorithm Efficiency
Estimating Algorithm Performance
Analysis of Algorithms
Algorithm Course Dr. Aref Rashad
Analysis of Algorithms
Presentation transcript:

CS 3343: Analysis of Algorithms Lecture 3: Asymptotic Notations, Analyzing non-recursive algorithms 12/8/2018

Outline Review of last lecture Continue on asymptotic notations Analyzing non-recursive algorithms 12/8/2018

True or false? 2n2 + 1 = O(n2) T (also ) Sqrt(n) = O(log n) F () log n = O(sqrt(n)) T (also o) n2(1 + sqrt(n)) = O(n2 log n) F () 3n2 + sqrt(n) = O(n2) T (also ) sqrt(n) log n = O(n) T (also o) 12/8/2018

Questions If f(n)  O(g(n)) compare f(n) and f(n) + g(n) compare g(n) and f(n) + g(n) compare h(n) f(n) and h(n) g(n) where h(n) > 0. How about f(n)  Ω (g(n)) and f(n)  Θ (g(n))? 12/8/2018

Asymptotic notations O: <= o: < Ω: >= ω: > Θ: = (in terms of growth rate) 12/8/2018

Mathematical definitions O(g(n)) = {f(n):  positive constants c and n0 such that 0 ≤ f(n) ≤ cg(n)  n>n0} Ω(g(n)) = {f(n):  positive constants c and n0 such that 0 ≤ cg(n) ≤ f(n)  n>n0} Θ(g(n)) = {f(n):  positive constants c1, c2, and n0 such that 0  c1 g(n)  f(n)  c2 g(n)  n  n0} 12/8/2018

O, Ω, and Θ The definitions imply a constant n0 beyond which they are satisfied. We do not care about small values of n. Use definition to prove big-O (Ω,Θ): find constant c (c1 and c2) and n0, such that the definition of big-O (Ω,Θ) is satisfied 12/8/2018

Big-Oh Claim: f(n) = 3n2 + 10n + 5  O(n2) Proof by definition: (Hint: Need to find c and n0 such that f(n) <= cn2 for all n > n0. You can be sloppy about the constant factors. Pick a comfortably large c when proving big-O or small one when proving big-Omega.) (Note: you just need to find one concrete example of c and n0, but the condition needs to be met for all n > n0. So do not try to plug in a concrete value of n and show the inequality holds.) Proof: 3n2 + 10n + 5  3n2 + 10n2 + 5,  n > 1  3n2 + 10n2 + 5n2, n > 1  18 n2,  n > 1 If we let c = 18 and n0 = 1, we have f(n)  c n2,  n > n0. Therefore by definition 3n2 + 10n + 5  O(n2). 12/8/2018

Use limits to compare orders of growth lim f(n) / g(n) = c > 0 ∞ f(n)  o(g(n)) f(n)  O(g(n)) f(n)  Θ (g(n)) n→∞ f(n)  Ω(g(n)) f(n)  ω (g(n)) 12/8/2018

Examples Compare 2n and 3n lim 2n / 3n = lim(2/3)n = 0 Therefore, 2n  o(3n), and 3n  ω(2n) How about 2n and 2n+1? 2n / 2n+1 = ½, therefore 2n = Θ (2n+1) n→∞ n→∞ 12/8/2018

L’ Hopital’s rule lim f(n) / g(n) = lim f(n)’ / g(n)’ n→∞ n→∞ Condition: If both lim f(n) and lim g(n) =  or 0 n→∞ n→∞ 12/8/2018

Example Compare n0.5 and log n lim n0.5 / log n = ? (n0.5)’ = 0.5 n-0.5 (log n)’ = 1 / n lim (n-0.5 / 1/n) = lim(n0.5) = ∞ Therefore, log n  o(n0.5) In fact, log n  o(nε), for any ε > 0 n→∞ 12/8/2018

Stirling’s formula or (constant) 12/8/2018

Examples Compare 2n and n! Therefore, 2n = o(n!) Compare nn and n! Therefore, nn = ω(n!) How about log (n!)? 12/8/2018

Example 12/8/2018

Properties of asymptotic notations Textbook page 51 Transitivity f(n) = (g(n)) and g(n) = (h(n)) => f(n) = (h(n)) (holds true for o, O, , and  as well). Symmetry f(n) = (g(n)) if and only if g(n) = (f(n)) Transpose symmetry f(n) = O(g(n)) if and only if g(n) = (f(n)) f(n) = o(g(n)) if and only if g(n) = (f(n)) 12/8/2018

About exponential and logarithm functions Textbook page 55-56 It is important to understand what logarithms are and where they come from. A logarithm is simply an inverse exponential function. Saying bx = y is equivalent to saying that x = logb y. Logarithms reflect how many times we can double something until we get to n, or halve something until we get to 1. log21 = ? log22 = ? 12/8/2018

Binary Search In binary search we throw away half the possible number of keys after each comparison. How many times can we halve n before getting to 1? Answer: ceiling (lg n) 12/8/2018

Logarithms and Trees How tall a binary tree do we need until we have n leaves? The number of potential leaves doubles with each level. How many times can we double 1 until we get to n? Answer: ceiling (lg n) 12/8/2018

Logarithms and Bits How many numbers can you represent with k bits? Each bit you add doubles the possible number of bit patterns You can represent from 0 to 2k – 1 with k bits. A total of 2k numbers. How many bits do you need to represent the numbers from 0 to n? ceiling (lg (n+1)) 12/8/2018

logarithms lg n = log2 n ln n = loge n, e ≈ 2.718 lgkn = (lg n)k lg lg n = lg (lg n) = lg(2)n lg(k) n = lg lg lg … lg n lg24 = ? lg(2)4 = ? Compare lgkn vs lg(k)n? 12/8/2018

Useful rules for logarithms For all a > 0, b > 0, c > 0, the following rules hold logba = logca / logcb = lg a / lg b logban = n logba blogba = a log (ab) = log a + log b lg (2n) = ? log (a/b) = log (a) – log(b) lg (n/2) = ? lg (1/n) = ? logba = 1 / logab 12/8/2018

More advanced dominance ranking 12/8/2018

Analyzing the complexity of an algorithm 12/8/2018

Kinds of analyses Worst case Provides an upper bound on running time Best case – not very useful, can always cheat Average case Provides the expected running time Very useful, but treat with care: what is “average”? 12/8/2018

General plan for analyzing time efficiency of a non-recursive algorithm Decide parameter (input size) Identify most executed line (basic operation) worst-case = average-case? T(n) = i ti T(n) = Θ (f(n)) 12/8/2018

Example repeatedElement (A, n) // determines whether all elements in a given // array are distinct for i = 1 to n-1 { for j = i+1 to n { if (A[i] == A[j]) return true; } return false; 12/8/2018

Example repeatedElement (A, n) // determines whether all elements in a given // array are distinct for i = 1 to n-1 { for j = i+1 to n { if (A[i] == A[j]) return true; } return false; 12/8/2018

Best case? Worst-case? Average case? 12/8/2018

Best case Worst-case Average case? A[1] = A[2] T(n) = Θ (1) No repeated elements T(n) = (n-1) + (n-2) + … + 1 = n (n-1) / 2 = Θ (n2) Average case? What do you mean by “average”? Need more assumptions about data distribution. How many possible repeats are in the data? Average-case analysis often involves probability. 12/8/2018

Find the order of growth for sums T(n) = i=1..n i = Θ (n2) T(n) = i=1..n log (i) = ? T(n) = i=1..n n / 2i = ? T(n) = i=1..n 2i = ? … How to find out the actual order of growth? Math… Textbook Appendix A.1 (page 1058-60) 12/8/2018

Closed form, or explicit formula Arithmetic series An arithmetic series is a sequence of numbers such that the difference of any two successive members of the sequence is a constant. e.g.: 1, 2, 3, 4, 5 or 10, 12, 14, 16, 18, 20 In general: Recursive definition Closed form, or explicit formula Or: 12/8/2018

Sum of arithmetic series If a1, a2, …, an is an arithmetic series, then e.g. 1 + 3 + 5 + 7 + … + 99 = ? (series definition: ai = 2i-1) This is ∑ i = 1 to 50 (ai) 12/8/2018

Closed form, or explicit formula Geometric series A geometric series is a sequence of numbers such that the ratio between any two successive members of the sequence is a constant. e.g.: 1, 2, 4, 8, 16, 32 or 10, 20, 40, 80, 160 or 1, ½, ¼, 1/8, 1/16 In general: Recursive definition Closed form, or explicit formula Or: 12/8/2018

Sum of geometric series if r < 1 if r > 1 if r = 1 12/8/2018

Sum of geometric series if r < 1 if r > 1 if r = 1 12/8/2018

Important formulas 12/8/2018

Sum manipulation rules Example: 12/8/2018

Sum manipulation rules Example: 12/8/2018

using the formula for geometric series: i=1..n n / 2i = n * i=1..n (½)i = ? using the formula for geometric series: i=0..n (½)i = 1 + ½ + ¼ + … (½)n = 2 Application: algorithm for allocating dynamic memories 12/8/2018

Application: algorithm for selection sort using priority queue i=1..n log (i) = log 1 + log 2 + … + log n = log 1 x 2 x 3 x … x n = log n! = (n log n) Application: algorithm for selection sort using priority queue 12/8/2018

Recursive definition of sum of series T (n) = i=0..n i is equivalent to: T(n) = T(n-1) + n T(0) = 0 T(n) = i=0..n ai is equivalent to: T(n) = T(n-1) + an T(0) = 1 Recurrence Boundary condition Recursive definition is often intuitive and easy to obtain. It is very useful in analyzing recursive algorithms, and some non-recursive algorithms too. 12/8/2018

Recursive definition of sum of series How to solve such recurrence or more generally, recurrence in the form of: T(n) = aT(n-b) + f(n) or T(n) = aT(n/b) + f(n) 12/8/2018