Difference between revisions of "Chapter 2"

From The Algorithm Design Manual Solution Wiki
Jump to navigation Jump to search
Line 140: Line 140:
 
#<math>f(n)=n \sqrt n + n^2</math>, <math>g(n)=n^2</math>
 
#<math>f(n)=n \sqrt n + n^2</math>, <math>g(n)=n^2</math>
 
#<math>f(n)=n^2-n+1</math>, <math>g(n)=n^2/2</math>
 
#<math>f(n)=n^2-n+1</math>, <math>g(n)=n^2/2</math>
 
  
 
[[2.17|Solution]]
 
[[2.17|Solution]]
Line 219: Line 218:
  
  
:[[2.29]]. For each of the following pairs of functions <math>f(n)</math> and <math>g(n)</math>, state whether <math>f(n)=O(g(n))</math>, <math>f(n)=\Omega(g(n))</math>, <math>f(n)=\Theta(g(n))</math>, or none
+
:[[2.29]]. For each of the following pairs of functions <math>f(n)</math> and <math>g(n)</math>, state whether <math>f(n)=O(g(n))</math>, <math>f(n)=\Omega(g(n))</math>, <math>f(n)=\Theta(g(n))</math>, or none of the above.
of the above.
 
 
#<math>f(n)=n^2+3n+4</math>, <math>g(n)=6n+7</math>
 
#<math>f(n)=n^2+3n+4</math>, <math>g(n)=6n+7</math>
 
#<math>f(n)=n \sqrt n</math>, <math>g(n)=n^2-n</math>
 
#<math>f(n)=n \sqrt n</math>, <math>g(n)=n^2-n</math>
 
#<math>f(n)=2^n - n^2</math>, <math>g(n)=n^4+n^2</math>
 
#<math>f(n)=2^n - n^2</math>, <math>g(n)=n^4+n^2</math>
 
  
 
[[2.29|Solution]].  
 
[[2.29|Solution]].  
Line 231: Line 228:
 
:2.30. For each of these questions, briefly explain your answer.
 
:2.30. For each of these questions, briefly explain your answer.
 
<br>
 
<br>
(a) If I prove that an algorithm takes <math>O(n^2)</math> worst-case time, is it
+
::(a) If I prove that an algorithm takes <math>O(n^2)</math> worst-case time, is it possible that it takes <math>O(n)</math> on some inputs?
possible that it takes <math>O(n)</math> on some inputs?
 
 
<br>
 
<br>
(b) If I prove that an algorithm takes <math>O(n^2)</math> worst-case time, is it
+
::(b) If I prove that an algorithm takes <math>O(n^2)</math> worst-case time, is it possible that it takes <math>O(n)</math> on all inputs?
possible that
 
it takes <math>O(n)</math> on all inputs?
 
 
<br>
 
<br>
(c) If I prove that an algorithm takes <math>\Theta(n^2)</math> worst-case time, is it
+
::(c) If I prove that an algorithm takes <math>\Theta(n^2)</math> worst-case time, is it possible that it takes <math>O(n)</math> on some inputs?
possible that it takes <math>O(n)</math> on some inputs?
 
 
<br>
 
<br>
(d) If I prove that an algorithm takes <math>\Theta(n^2)</math> worst-case time,
+
::(d) If I prove that an algorithm takes <math>\Theta(n^2)</math> worst-case time, is it possible that it takes <math>O(n)</math> on all inputs?
is it possible that it takes <math>O(n)</math> on all inputs?
 
 
<br>
 
<br>
(e) Is the function <math>f(n) = \Theta(n^2)</math>, where <math>f(n) = 100 n^2</math> for even <math>n</math>
+
::(e) Is the function <math>f(n) = \Theta(n^2)</math>, where <math>f(n) = 100 n^2</math> for even <math>n</math> and <math>f(n) = 20 n^2 - n \log_2 n</math> for odd <math>n</math>?
and <math>f(n) = 20 n^2 - n \log_2 n</math> for odd <math>n</math>?
 
  
  
 
:[[2.31]]. For each of the following, answer ''yes'', ''no'', or ''can't tell''. Explain your reasoning.
 
:[[2.31]]. For each of the following, answer ''yes'', ''no'', or ''can't tell''. Explain your reasoning.
 
<br>
 
<br>
(a) Is <math>3^n = O(2^n)</math>?
+
::(a) Is <math>3^n = O(2^n)</math>?
 
<br>
 
<br>
(b) Is <math>\log 3^n = O( \log 2^n )</math>?
+
::(b) Is <math>\log 3^n = O( \log 2^n )</math>?
 
<br>
 
<br>
(c) Is <math>3^n = \Omega(2^n)</math>?
+
::(c) Is <math>3^n = \Omega(2^n)</math>?
 
<br>
 
<br>
(d) Is <math>\log 3^n = \Omega( \log 2^n )</math>?
+
::(d) Is <math>\log 3^n = \Omega( \log 2^n )</math>?
  
 
[[2.31|Solution]]
 
[[2.31|Solution]]
  
  
:2.32. For each of the following expressions <math>f(n)</math> find a simple <math>g(n)</math> such that
+
:2.32. For each of the following expressions <math>f(n)</math> find a simple <math>g(n)</math> such that <math>f(n)=\Theta(g(n))</math>.
<math>f(n)=\Theta(g(n))</math>.
+
::#<math>f(n)=\sum_{i=1}^n {1\over i}</math>.
#<math>f(n)=\sum_{i=1}^n {1\over i}</math>.
 
 
#<math>f(n)=\sum_{i=1}^n \lceil {1\over i}\rceil</math>.
 
#<math>f(n)=\sum_{i=1}^n \lceil {1\over i}\rceil</math>.
 
#<math>f(n)=\sum_{i=1}^n \log i</math>.
 
#<math>f(n)=\sum_{i=1}^n \log i</math>.
Line 274: Line 264:
 
<math>f_3(n) = \sum_{i=0}^n 2^i</math>,
 
<math>f_3(n) = \sum_{i=0}^n 2^i</math>,
 
<math>f_4(n) = \log_2(\sum_{i=0}^n 2^i)</math>.
 
<math>f_4(n) = \log_2(\sum_{i=0}^n 2^i)</math>.
 
  
 
[[2.33|Solution]]
 
[[2.33|Solution]]
Line 300: Line 289:
 
<br><math>
 
<br><math>
 
\begin{array}{lcc}
 
\begin{array}{lcc}
        & A                    & B \\
+
::        & A                    & B \\
(a)    & n^{100}              & 2^n \\
+
::(a)    & n^{100}              & 2^n \\
(b)    & (\lg n)^{12}        & \sqrt{n} \\
+
::(b)    & (\lg n)^{12}        & \sqrt{n} \\
(c)    & \sqrt{n}              & n^{\cos (\pi n/8)} \\
+
::(c)    & \sqrt{n}              & n^{\cos (\pi n/8)} \\
(d)    & 10^n                  & 100^n \\
+
::(d)    & 10^n                  & 100^n \\
(e)    & n^{\lg n}            & (\lg n)^n \\
+
::(e)    & n^{\lg n}            & (\lg n)^n \\
(f)    & \lg{(n!)}            & n \lg n
+
::(f)    & \lg{(n!)}            & n \lg n
 
\end{array}
 
\end{array}
 
</math>
 
</math>

Revision as of 16:45, 7 September 2020

Algorithm Analysis

Program Analysis

2.1. What value is returned by the following function? Express your answer as a function of . Give the worst-case running time using the Big Oh notation.
  mystery(n)
      r:=0
      for i:=1 to n-1 do
          for j:=i+1 to n do
              for k:=1 to j do
                  r:=r+1
       return(r)

Solution


2.2. What value is returned by the following function? Express your answer as a function of . Give the worst-case running time using Big Oh notation.
   pesky(n)
       r:=0
       for i:=1 to n do
           for j:=1 to i do
               for k:=j to i+j do
                   r:=r+1
       return(r)


2.3. What value is returned by the following function? Express your answer as a function of . Give the worst-case running time using Big Oh notation.
   prestiferous(n)
       r:=0
       for i:=1 to n do
           for j:=1 to i do
               for k:=j to i+j do
                   for l:=1 to i+j-k do
                       r:=r+1
       return(r) 

Solution


2.4. What value is returned by the following function? Express your answer as a function of . Give the worst-case running time using Big Oh notation.
  conundrum()
      
      for  to  do
      for  to  do
      for  to  do
      
      return(r)


2.5. Consider the following algorithm: (the print operation prints a single asterisk; the operation doubles the value of the variable ).
   for  to 
       
       while ():
          print '*'
          
Let be the complexity of this algorithm (or equivalently the number of times * is printed). Proivde correct bounds for , and , ideally converging on .

Solution


2.6. Suppose the following algorithm is used to evaluate the polynomial
   
   
   for  to  do
   
   
  1. How many multiplications are done in the worst-case? How many additions?
  2. How many multiplications are done on the average?
  3. Can you improve this algorithm?


2.7. Prove that the following algorithm for computing the maximum value in an array is correct.
  max(A)
     
     for  to n do
           if  then 
     return (m)

Solution

Big Oh

2.8. True or False?
  1. Is ?
  2. Is ?


2.9. For each of the following pairs of functions, either is in , is in , or . Determine which relationship is correct and briefly explain why.
  1. ; +
  2. ;
  3. ;
  4. ;
  5. ;
  6. ;
  7. ;
  8. ;

Solution


2.10. For each of the following pairs of functions and , determine whether , , or both.
  1. ,
  2. ,
  3. ,
  4. ,
  5. ,
  6. ,


2.11. For each of the following functions, which of the following asymptotic bounds hold for ?

Solution


2.12. Prove that .


2.13. Prove that .

Solution


2.14. Prove or disprove: .


2.15. Suppose you have algorithms with the five running times listed below. (Assume these are the exact running times.) How much slower do each of these inputs get when you (a) double the input size, or (b) increase the input size by one?
(a) (b) (c) (d) (e)

Solution


2.16. Suppose you have algorithms with the six running times listed below. (Assume these are the exact number of operations performed as a function of input size .)Suppose you have a computer that can perform operations per second. For each algorithm, what is the largest input size n that you can complete within an hour?
(a) (b) (c) (d) (e) (f)


2.17. For each of the following pairs of functions and , give an appropriate positive constant such that for all .
  1. ,
  2. ,
  3. ,

Solution


2.18. Prove that if and , then .


2.19. Prove that if and , then .

Solution


2.20. Prove that if and , then


2.21. Prove for all and all sets of constants ,

Solution


2.22. Show that for any real constants and ,


2.23. List the functions below from the lowest to the highest order. If any two or more are of the same order, indicate which.

Solution


2.24


2.25

Solution


2.26. List the functions below from the lowest to the highest order. If any two or more are of the same order, indicate which.


2.27. Find two functions and that satisfy the following relationship. If no such and exist, write None.
  1. and
  2. and
  3. and
  4. and

Solution


2.28. True or False?


2.29. For each of the following pairs of functions and , state whether , , , or none of the above.
  1. ,
  2. ,
  3. ,

Solution.


2.30. For each of these questions, briefly explain your answer.


(a) If I prove that an algorithm takes worst-case time, is it possible that it takes on some inputs?


(b) If I prove that an algorithm takes worst-case time, is it possible that it takes on all inputs?


(c) If I prove that an algorithm takes worst-case time, is it possible that it takes on some inputs?


(d) If I prove that an algorithm takes worst-case time, is it possible that it takes on all inputs?


(e) Is the function , where for even and for odd ?


2.31. For each of the following, answer yes, no, or can't tell. Explain your reasoning.


(a) Is ?


(b) Is ?


(c) Is ?


(d) Is ?

Solution


2.32. For each of the following expressions find a simple such that .
  1. .
  1. .
  2. .
  3. .


2.33. Place the following functions into increasing asymptotic order.

, , , .

Solution


2.34. Which of the following are true?
  1. .
  2. .
  3. .


2.35. For each of the following functions find a simple function such that .
  1. .
  2. .
  3. .

Solution


2.36. For each pair of expressions below,

indicate whether is , , , , or of . Note that zero, one or more of these relations may hold for a given pair; list all correct ones.

Summations

2.37
2.38
2.39
2.40
2.41
2.42
2.43

Logartihms

2.44
2.45
2.46
2.47

Interview Problems

2.48
2.49
2.50
2.51
2.52
2.53
2.54
2.55


Back to Chapter List