For the following pairs of functions, indicate whether the ?? could be replaced with \(O\), \(\Omega\) or \(\Theta\). More than one may be applicable.
Pr. | \(f(n)\) | \(g(n)\) | \(f(n) \in ?? (g(n))\) |
---|---|---|---|
a) | \(2 n\) | \(n^2 + 1\) | |
b) | \(0.00001n^2\) | \(2^{2^{10}} (n \log n)\) | |
c) | \(5 n^{20} + n^2\log_2 n\) | \(n !\) | |
d) | \(4 n\) | \(4 \log_2 (2^n)\) | |
e) | \(5 n \log n\) | \(2 n^{1.5}\) | |
f) | \(7 n^{1024}\) | \(1.000001^n\) | |
g) | \(\frac{2 n^2}{\log n}\) | \(3 n\) |
List each of the functions from the previous problem from slowest to fastest growing in a table like the table below (include both the \(f(n)\) and \(g(n)\) functions). Group the functions by complexity class. Indicate which functions are in the same complexity class (same big-\(\Theta\) set).
Complexity class | Functions from previous problem. |
---|---|
\(\Theta(\) \()\) | |
\(\Theta(\) \()\) | |
\(\Theta(\) \()\) | |
\(\Theta(\) \()\) | |
\(\Theta(\) \()\) | |
\(\Theta(\) \()\) | |
\(\Theta(\) \()\) |
NOTE: You may not need all of the rows in the table above.
For each of the following Java methods, analyze the running time by:
Code Listing A
public int A(int[] array) {
int result = 25;
int i = array.length;
while (i > 1) {
if (array[i - 1] < 0) {
return 0;
}
for (int j = 0; j < array.length; j++) {
result += 1;
result += 3 * array[j];
}
i = i / 2;
}
return result;
}
Code Listing B
public int B(int[] array1) {
int result = 0;
for (int i = array1.length-1; i >= 0; i--) {
result += array1[j] * 3;
}
for (int j = 0; j < array1.length / 2; j++) {
result += array1[j] * 10;
}
return result;
}
Code Listing C
public int C(int[] array1) {
int result = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1.length; j++) {
for (int k = 1; k < array1.length; k = k * 2) {
result += j * j * array1[k] + array1[i] + array1[j];
}
}
}
return result;
}
Consider the following two algorithms: Algorithm A requires \(7n + 4\) steps to complete on an input of size \(n\). Algorithm B requires \(n^2\) steps. For what values of \(n\) should we prefer algorithm A? For what values of \(n\) should we prefer algorithm B? Justify your answer.
Use either definition of big-\(\Theta\) to show that \(2n^3 + 2n^2 + 3n \in \Theta(n^3)\).
Use an appropriate typesetting program to produce a PDF of your solutions and submit them via the turn-in link on Canvas. (We encourage you to used LaTeX, but are not requiring it for this submission. Overleaf is a relatively user-friendly cloud-based LaTeX editor.)