Name _________________________
CS60
Computational Complexity Worksheet
Submit this for up to 10 points
Suppose p and q are two procedures, functions, or methods as appropriate, with run-time complexity P and Q respectively. That is, the runtime of p(x) is O(P(n)) and the runtime of q(x) is O(Q(n)) where n is a variable indicating the "size" of the input data x.
1. Suppose P(n) = n2 and Q(n) = n3. Give the tightest possible bound on the run-time of the sequence
p(x); q(x);
(p and q done in sequence) assuming that p has no side-effects on the input data x.
2. Give the tightest possible bound on the run-time of the sequence
p(x); q(x);
in terms of P and Q, again assuming that p has no side-effects on the input data.
3. Consider the for loop:
for( int i = 0; i < n; i++) { r(i, x); }
where r does not modify its argument and has a runtime bound of R(n), independent of i.
Give the tightest possible bound on the run-time of this loop.
4. Consider the for loops:
for( int i = 0; i < n; i++) for( int j = 0; j < n; j++ ) { s(i, j, x); }
where s does not modify its argument and has a runtime of S(n), independent of i and j.
Give the tightest possible bound on the run-time of this loop.
5. Repeat the previous question, for the following program, noting that the inner index is a function of the outer one:
for( int i = 0; i < n; i++) for( int j = 0; j < i; j++ ) { s(i, j, x); }
6. Repeat the previous question, for the following program:
for( int i = 0; i < n; i++) for( int j = 0; j < 10000; j++ ) { s(i, j, x); }
7. Repeat the previous question, for the following program:
for( int i = 1; i <= n; i *= 2) for( int j = 0; j < i; j++ ) { s(i, j, x); }
8. Repeat the previous question, for the following program:
for( int i = n; i > 0; i /= 2) for( int j = 0; j < i; j++ ) { s(i, j, x); }
9. Repeat the previous question, for the following program:
for( int i = 0; i < n; i++ ) for( int j = 1; j < i; j*= 2 ) { s(i, j, x); }
10. What if p and q are functions, with P and Q as bounds on the run-time of p and q as before. How would you give a bound on the run-time of:
q(p(x));