240 likes | 251 Views
Learn about the big-Oh notation, its definitions, and how to determine the efficiency of algorithms using big-Oh analysis. Gain an understanding of logarithms and arithmetic series in the process.
E N D
CSE 373: Data Structures and Algorithms Lecture 4: Math Review/Asymptotic Analysis II
Big-Oh notation • Asymptotic upper bound • Defn: f(n) = O(g(n)), if there exists positive constants c , n0such that: f(n) c · g(n) for all n n0 • Idea: We are concerned with how the function grows when N is large. We are not concerned with constant factors: coarse distinctions among functions • Lingo: "f(n) grows no faster than g(n)." c *
Functions in Algorithm Analysis • f(n) : {0, 1, } + • domain of f is the nonnegative integers • range of f is the nonnegative reals • Unless otherwise indicated, the symbols f, g, h, and T refer to functions with this domain and range. • We use many functions with other domains and ranges. • Example: f(n) = 5 n log2 (n/3) • Although the domain of f is nonnegative integers, the domain of log2 is all positive reals.
Big-Oh example problems • n = O(2n) ? • 2n = O(n) ? • n = O(n2) ? • n2 = O(n) ? • n = O(1) ? • 100 = O(n) ? • 214n + 34 = O(2n2 + 8n) ?
Preferred big-Oh usage • pick tightest bound. If f(n) = 5n, then: f(n) = O(n5) f(n) = O(n3) f(n) = O(n log n) f(n) = O(n) preferred • ignore constant factors and low order terms f(n) = O(n), notf(n) = O(5n) f(n) = O(n3), not f(n) = O(n3 + n2 + n log n) • Wrong: f(n) O(g(n)) • Wrong: f(n) O(g(n))
Show f(n) = O(n) Claim: 2n + 6 = O(n) Proof: Must find c, n0 such that for all n > n0, 2n + 6 <= n
Big omega, theta • big-Oh Defn: f(n) = O(g(n)) if there exist positive constants c , n0such that: f(n) c · g(n) for all n n0 • big-Omega Defn: f(n) = (g(n)) if there are positive constants c and n0such that f(n) cg(n) for all n n0 • Lingo: "f(n) grows no slower than g(n)." • big-Theta Defn: f(n) = (g(n)) if and only if f(n) = O(g(n)) and f(n) = (g(n)). • Big-Oh, Omega, and Theta establish a relative ordering among all functions of n
? ? ? Efficiency examples 3 sum = 0; for (int i = 1; i <= N * N; i++) { for (int j = 1; j <= N * N * N; j++) { sum++; } }
N5 + 1 N2 N3 Efficiency examples 3 sum = 0; for (int i = 1; i <= N * N; i++) { for (int j = 1; j <= N * N * N; j++) { sum++; } } • So what is the Big-Oh?
Math background: Exponents • Exponents • XY , or "X to the Yth power";X multiplied by itself Y times • Some useful identities • XA XB = XA+B • XA / XB = XA-B • (XA)B = XAB • XN+XN = 2XN • 2N+2N = 2N+1
? ? Efficiency examples 4 sum = 0; for (int i = 1; i <= N; i += c) {sum++; }
N/c + 1 N/c Efficiency examples 4 sum = 0; for (int i = 1; i <= N; i += c) {sum++; } • What is the Big-Oh? • Intuition: Adding to the loop counter means that the loop runtime grows linearly when compared to its maximum value n.
? ? Efficiency examples 5 sum = 0; for (int i = 1; i <= N; i *= c) {sum++; } • Intuition: Multiplying the loop counter means that the maximum value n must grow exponentially to linearly increase the loop runtime
logc N + 1 logc N Efficiency examples 5 sum = 0; for (int i = 1; i <= N; i *= c) {sum++; } • What is the Big-Oh?
Math background: Logarithms • Logarithms • definition: XA = B if and only if logX B = A • intuition: logX B means: "the power X must be raised to, to get B" • In this course, a logarithm with no base implies base 2.log B means log2 B • Examples • log2 16 = 4 (because 24 = 16) • log10 1000 = 3 (because 103 = 1000)
Logarithm identities Identities for logs with addition, multiplication, powers: • log (AB) = log A + log B • log (A/B) = log A – log B • log (AB) = B log A Identity for converting bases of a logarithm: • example:log432 = (log2 32) / (log2 4) = 5 / 2
Techniques: Logarithm problem solving • When presented with an expression of the form: • logaX = Y and trying to solve for X, raise both sides to the a power. • X = aY • When presented with an expression of the form: • logaX = logbY and trying to solve for X, find a common base between the logarithms using the identity on the last slide. • logaX = logaY / logab
Logarithm practice problems • Determine the value of x in the following equation. • log7 x + log713 = 3 • Determine the value of x in the following equation. • log8 4 - log8 x = log8 5 + log16 6
Prove identity for converting bases Prove logab = logcb / logca.
A log is a log… • We will assume all logs are to base 2 • Fine for Big Oh analysis because the log to one base is equivalent to the log of another base within a constant factor • E.g., log10x is equivalent to log2x within what constant factor?
Efficiency examples 6 int sum = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= i / 2; j += 2) { sum++; } }
Math background: Arithmetic series • Series • for some expression Expr (possibly containing i ), means the sum of all values of Expr with each value of i between j and k inclusive Example: = (2(0) + 1) + (2(1) + 1) + (2(2) + 1) + (2(3) + 1) + (2(4) + 1)= 1 + 3 + 5 + 7 + 9= 25
Series identities • sum from 1 through N inclusive • is there an intuition for this identity? • sum of all numbers from 1 to N1 + 2 + 3 + ... + (N-2) + (N-1) + N • how many terms are in this sum? Can we rearrange them?