Introduction to Algorithms

Introduction to Algorithms

CS 5002: Discrete Structures Fall 2018 Lecture 9: November 8, 2018 1 Instructors: Adrienne Slaughter, Tamara Bonaci Disclaimer: These notes have not been subjected to the usual scrutiny reserved for formal publications. They may be distributed outside this class only with the permission of the Instructor. Introduction to Algorithms Readings for this week: Rosen, Chapter 2.1, 2.2, 2.5, 2.6 Sets, Set Operations, Cardinality of Sets, Matrices 9.1 Overview Objective: Introduce algorithms. 1. Review logarithms 2. Asymptotic analysis 3. Define Algorithm 4. How to express or describe an algorithm 5. Run time, space (Resource usage) 6. Determining Correctness 7. Introduce representative problems 1. foo 9.2 Asymptotic Analysis The goal with asymptotic analysis is to try to find a bound, or an asymptote, of a function. This allows us to come up with an \ordering" of functions, such that one function is definitely bigger than another, in order to compare two functions. We do this by considering the value of the functions as n goes to infinity, so for very large values of n, as opposed to small values of n that may be easy to calculate. Once we have this ordering, we can introduce some terminology to describe the relationship of two functions. 9-1 9-2 Lecture 9: November 8, 2018 Growth of Functions nn 4096 n! 2048 1024 512 2n 256 128 n2 64 32 n log(n) 16 n 8 p 4 n log(n) 2 1 1 2 3 4 5 6 7 8 From this chart, we see: p 1 log n n n n log(n) n2 2n n! nn (9.1) Complexity Terminology Θ(1) Constant Θ(log n) Logarithmic Θ(n) Linear Θ(n log n) Linearithmic Θ nb Polynomial Θ(bn) (where b > 1) Exponential Θ(n!) Factorial 9.2.1 Big-O: Upper Bound Definition 9.1 (Big-O: Upper Bound) f(n) = O(g(n)) means there exists some constant c such that f(n) ≤ c · g(n), for large enough n (that is, as n ! 1). We say f(n) = O(g(n)) Example: I claim 3n2 − 100n + 6 = O(n2). I can prove this using the definition of big-O: Lecture 9: November 8, 2018 9-3 f(n) = 3n2 − 100n + 6 (9.2) g(n) = n2 (9.3) )3n2 − 100n + 6 ≤ c · n2 for some c (9.4) If c = 3 : 3n2 − 100n + 6 ≤ 3n2 (9.5) To prove using Big-O: • Determine f(n) and g(n) • Write the equation based on the definition • Choose a c such that the equation is true. { If you can find a d, then f(n) = O(g(n)). If not, then f(n) 6= O(g(n)). These statements are all true: 3n2 − 100n + 6 = O(n2) (9.6) 3n2 − 100n + 6 = O(n3) (9.7) 3n2 − 100n + 6 6= O(n) (9.8) Proving 9.7: f(n) = 3n2 − 100n + 6 (9.9) g(n) = n3 (9.10) ) 3n2 − 100n + 6 = c · n3 (for some c) (9.11) If c = 1 : 3n2 − 100n + 6 ≤ n3 (when n > 3) (9.12) We also know this to be true because order is transitive: if f(n) = O(g(n)), and g(n) = O(h(n)), then f(n) = O(h(n)). Since n2 = O(n3), then any f(n) = O(n2) is also O(n3). Proving 9.8: f(n) = 3n2 − 100n + 6 (9.13) g(n) = n (9.14) For any c : cn < 3n2 (when n > c) (9.15) 9.2.2 Big-Omega: Lower Bound Definition 9.2 (Big-Omega: Lower Bound) f(n) = Ω(g(n)) means there exists some constant c such that f(n) ≥ c · g(n), for large enough n (that is, as n ! 1). We say f(n) = Ω(g(n)) or \f of n is Big Omega of g of n" 9-4 Lecture 9: November 8, 2018 Example: I claim 3n2 − 100n + 6 = Ω(n2). I can prove this using the definition of big-Omega: f(n) = 3n2 − 100n + 6 (9.16) g(n) = n2 (9.17) )3n2 − 100n + 6 ≥ c · n2 for some c (9.18) If c = 2 : 3n2 − 100n + 6 ≤ 2n2 (9.19) We show Big-Omega the same way we show Big-O. These statements are all true: 3n2 − 100n + 6 = Ω(n2) (9.20) 3n2 − 100n + 6 6= Ω(n3) (9.21) 3n2 − 100n + 6 = Ω(n) (9.22) Proving 9.21: f(n) = 3n2 − 100n + 6 (9.23) g(n) = n3 (9.24) ) 3n2 − 100n + 6 ≥ c · n3 (for some c) (9.25) If c = 1 : 3n2 − 100n + 6 ≥ n3 (when n > 3) (9.26) Proving 9.22: f(n) = 3n2 − 100n + 6 (9.27) g(n) = n (9.28) For any c : cn < 3n2 (when n > 100c) (9.29) 9.2.3 Big-Theta: \Tight" Bound Definition 9.3 (Big-Theta: \Tight" Bound) f(n) = Θ(g(n)) means there exists some constants c1 and c2 such that f(n) ≤ c1g(n) and f(n) ≥ c2g(n). We say f(n) = Θ(g(n)) or \f of n is Big-Theta of g of n". Definition 9.4 (Theta and \order of") When f(x) = Θ(g(x)), it is the same as saying f(x) is the order of g(x), or that f(x) and g(x) are the same order. 3n2 − 100n + 6 = Θ(n2) Both O and Ω apply Lecture 9: November 8, 2018 9-5 3n2 − 100n + 6 6= Θ(n3) Only O applies 3n2 − 100n + 6 6= Θ(n) Only Ω applies Interesting Aside Donald Knuth popularized the use of Big-O notation. It was originally inspired by the use of \ell" numbers, written as L(5), which indicates a number that we don't know the exact value of, but is less than 5. That allows us to reason about the value without knowing the exact value: we know L(5) < 100, for example. n n−1 n Theorem 9.5 If f(x) = anx + an−1x + ··· + a1x + a0, then f(x) = O( ) a) f(x) = 17x + 11 b) f(x) = x2 + 1000 c) f(x) = x log x d) f(x) = x4=2 e) f(x) = 2x f) f(x) = bxc · dxe 9.2.4 Logs, Powers, Exponents We've seen f(n) = O(nd). If d > c > 1, then nc = O(nc). nc is O nd ; but nd is not O (nc). logb n is O(n) whenever b > 1. Whenever b > 1, c and d are positive: c d d c (logb n) is O n ; but n is not (O (logb n) ) (9.30) This tells us that every positive power of the logarithm of n to the base b, where b > 1, is big-O of every positive power of n, but the reverse relationship never holds. In Example 7, we also showed that n is O(2n). More generally, whenever d is positive and b > 1, we have nd is O (bn) ; but bn is not O nd (9.31) This tells us that every power of n is big-O of every exponential function of n with a base that is greater than one, but the reverse relationship never holds. Furthermore, we have when c > b > 1, bn is O (cn) but cn is not O (bn) (9.32) This tells us that if we have two exponential functions with different bases greater than one, one of these functions is big-O of the other if and only if its base is smaller or equal. 9.2.5 Adding Functions There are a set of rules that govern combining functions together. O(f(n)) + O(g(n)) ! O(max(f(n); g(n))) (9.33) Ω(f(n)) + Ω(g(n)) ! Ω(max(f(n); g(n))) (9.34) Θ(f(n)) + Θ(g(n)) ! Θ(max(f(n); g(n)) (9.35) These statements express the notion that the largest term of the statement is the dominant one. For example, n3 + 2n2 + 3 = O(n3). Example: Prove that n2 = O(2n). 9-6 Lecture 9: November 8, 2018 Example: Prove that if f1(n) = O(g1(n)) and f2(n) = O(g2(n)), then f1(n)+f(n) = O(g1(n)+g2(n)). Example: f(n) = n + log n (9.36) g(n) = p(n) (9.37) Is f(n) = O(g(n)), g(n) = O(f(n)), or both? p Example: If f(n) = n + log n + n, find a simple function g such that f(n) = Θ(g(n)). Lecture 9: November 8, 2018 9-7 Summary • f(n) = O(g(n)) means c · g(n) is an upper bound on f(n). Thus there exists some constant c such that f(n) is always ≤ c · g(n), for large enough n (i.e., n ≥ n0 for some constant n0). • f(n) = Ω(g(n)) means c · g(n) is a lower bound on f(n). Thus there exists some constant c such that f(n) is always ≥ c · g(n), for all n ≥ n0. • f(n) = Θ(g(n)) means c1 · g(n) is an upper bound on f(n) and c2 · g(n) is a lower bound on f(n), for all n ≥ n0. Thus there exist constants c1 and c2 such that f(n) ≤ c1 · g(n) and f(n) ≥ c2 · g(n). This means that g(n) provides a nice, tight bound on f(n). 9.2.6 Introduction to Algorithms • An algorithm is a set of instructions for accomplishing a task. • Technically, any program is an algorithm • We talk about algorithms as general approaches to specific problems • An algorithm is general, but is implemented in code to make it specific Algorithms are like Recipes • If I were to use a simile, I'd say algorithms are like recipes.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    24 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us