Lecture 26: Algorithms with Logarithmic Complexity

Lecture 26: Algorithms with Logarithmic Complexity

Lecture 26: Logarithmic Functions Binary Search Algorithms with Logarithmic Complexity Summary Graph Module Home Page Aims: Title Page • To discuss logarithms; JJ II • To look at an algorithm with logarithmic complexity. J I Page 1 of 11 Back Full Screen Close Quit 26.1. Logarithmic Functions • Suppose you are told the following: Logarithmic Functions 3c = 81 Binary Search Summary Graph What is c? To what power must you raise 3 to get 81? • Logarithmic functions are the inverse of exponential functions. If a is b to the power c Module Home Page c, i.e. b = a, we also say that c is the logarithm of a to the base b (meaning c is the power to which we have to raise b in order to get a), and we write logb a = c. Title Page • For example, 2 log10 100 = 2 (since 10 = 100) 3 log2 8 = 3 (since 2 = 8) JJ II • Note that logb a is defined only when a is a positive real number and b is a positive real number other than 1. (Note: a cannot be 0; b cannot be 0 or 1.) We’ll only be J I dealing with positive integer values for a and integers > 1 for b anyway. And mostly, for us, b will be 2. Page 2 of 11 • Some laws: Back logb 1 = 0 logb b = 1 logb cd = logb c + logb d Full Screen logb c/d = logb c − logb d c logb a = c logb a log a = (log a)/ log b Close b c c blogc a = alogc b Quit n • E.g. simplify log2 2 • Outside Computer Science, it is common to compute logs to the base 10 and to compute so-called natural logs, which are logs to the base e (where e = 2.71828 ...). Logarithmic Functions But, in Computer Science logs to the base 2 are the most common. Binary Search • If your calculator has a button labelled log on it, then this almost certainly computes Summary Graph logs to the base 10. If your calculator has a button labelled ln, then this computes natural logs. Module Home Page • You may then be wondering: if my calculator only offers logs to the base 10 and natural logs, how do I use my calculator to compute logs to the base 2? Well, you Title Page can use this law: logc a logb a = JJ II logc b This law allows us to change base. In particular, J I ln a log a = 2 ln 2 Page 3 of 11 • E.g. what is log2 12? Back • What are logs used for? – They help you solve equations that involve exponentiation. Full Screen – They reduce multiplication/division of large numbers to addition/subtraction (log tables & slide rules!) Close – In complexity theory, they are used to measure input sizes, especially when the input is numeric and we want to count the number of digits. Quit – In complexity theory, the complexity functions for algorithms that repeatedly split their input into two halves involve logs to the base 2. – Logarithmic scale helps us to fit plots onto graph paper. Logarithmic Functions – They are used in the Richter scale for measuring the seismic energy released by earthquakes! Binary Search Summary Graph • Suppose algorithm A’s worst-case time complexity tA(n) =def log n and algorithm B’s worst-case time complexity tB(n) =def n. logn grows much more slowly than n. Module Home Page 100 tA(n) = log n tB(n) = n 90 Title Page 80 70 JJ II 60 50 J I t(n) 40 Page 4 of 11 30 20 Back 10 0 0 20 40 60 80 100 Full Screen Input size, n Close Quit 26.2. Binary Search • Here is the binary search algorithm given in a previous lecture. Remember it assumes that the contents of a are stored in ascending order. Note also that here we have Logarithmic Functions assumed that a contains distinct integers (no duplicates). This simplifies the analysis. Binary Search But the algorithm works just as well when duplicates are allowed. Summary Graph Algorithm: BinarySearch(x, a, lower, upper) Module Home Page Parameters: x is an integer; a[lower . upper] is an array of distinct integers stored in non-decreasing order; 0 < lower ≤ upper. Returns: The position of x in a if found, otherwise fail. Title Page { lo := lower; hi := higher; JJ II while lo ≤ hi { mid := (lo + hi) div 2; if a[mid] < x J I { lo := mid + 1; } Page 5 of 11 else if a[mid] = x { return mid; } Back else { hi := mid − 1; } Full Screen } return fail; Close } Quit • To carry out our analysis, let’s make some assumptions: – The algorithm performs comparisons, some arithmetic and some assignments. Logarithmic Functions We count only element comparisons, i.e. comparisons between x and the ele- Binary Search ments in a. The frequency of the other operations would be similar to that of Summary Graph the element comparisons. – What we want to do in this algorithm is carry out a three-way comparison. We Module Home Page want to find out whether a[mid] is less than, equal to, or greater than x. But DECAFF, along with most programming languages, forces us to implement this as two two-way comparisons. For simplicity, in our frequency counts we will Title Page assume that only a single operation is needed to determine which of the three possibilities holds. JJ II • Assume that a is an array of length 15 and that it is indexed from 1 to 15 (rather than 0 to 14 as it would be in Java). For concreteness, let’s say that these are the values that a contains: J I 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 Page 6 of 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Back In the lecture, we will search for – x = 170 Full Screen – x = 150 – x = 180 Close – x = 185 Quit 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Logarithmic Functions 8 Binary Search Summary Graph 4 12 Module Home Page 2 6 10 14 Title Page 1 3 5 7 9 11 13 15 JJ II • Searching for x = 185: J I Page 7 of 11 Back Full Screen Close Quit 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Logarithmic Functions 8 Binary Search Summary Graph 4 12 Module Home Page 2 6 10 14 Title Page 1 3 5 7 9 11 13 15 JJ II FAIL – Initially, the number of candidates is n. J I – If you have executed the loop body once, the number of candidates is at most n div 2. Page 8 of 11 – If you have executed the loop body twice, the number of candidates is at most n div 4. – In general, if you have executed the loop body k times, the number of candidates Back is at most n div 2k. – The worst case is unsuccessful search where we reduce the candidates to 1 and Full Screen then do one more test. We have reduced the candidates to 1 when 1 = n div 2k Close i.e. k = log2 n Quit – So, performing one more test, we get t(n) =def 1 + log2 n Logarithmic Functions (For those of you who can handle a bit more precision, it is actually 1+blog2 nc.) Binary Search – E.g. with n = 15, k = 4 Summary Graph • Closing remarks: Module Home Page – Many algorithms involve repeatedly splitting a list or array into equal halves and then turning attention to one or both halves. – Base 2 logarithms tell us how many times we can split into halves. Title Page – Base 2 logarithms are therefore crucial in complexity analysis. – They are so useful that, henceforth, if we write log n we mean log2 n. JJ II J I Page 9 of 11 Back Full Screen Close Quit 26.3. Summary Graph • Let’s put several plots on the same graph: something logarithmic, linear, quadratic, exponential and factorial. Logarithmic Functions Binary Search 50000 tE(n) = n! Summary Graph tD(n) = 2^n tC(n) = n^2 tB(n) = n tA(n) = log n 40000 Module Home Page 30000 Title Page t(n) 20000 JJ II 10000 J I 0 Page 10 of 11 0 20 40 60 80 100 Input size, n Back Acknowledgements Full Screen I based my explanation of the behaviour and complexity of binary search on the treatments given in [GT02] and [HSR96]. Close Clip Art (of head with bomb) licensed from the Clip Art Gallery on DiscoverySchool.com. Quit References [GT02] M. T. Goodrich and R. Tamassia. Algorithm Design: Foundations, Analysis, and Internet Examples. Wiley, 2002. Logarithmic Functions Binary Search [HSR96] E. Horowitz, S. Sahni, and S. Rajasekaran. Computer Algorithms/C++. W.H. Summary Graph Freeman, 1996. Module Home Page Title Page JJ II J I Page 11 of 11 Back Full Screen Close Quit.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    11 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