csc 415 Review for Final WITH SOLUTIONS

advertisement
csc 415 Review for Final
WITH SOLUTIONS
1. For the following algorithm segment, give T(n), the exact number of times the
line x := x + 1 is executed. Assume n is any positive integer which is a power of
2.
2.
3.
4.
5.
6.
7.
j := n
while j >=
begin
for i :=
x := x
j := j /
end
1 do
1 to j do
+ 1
2
ANSWER:
So, the closed form is T(n) = 2n - 1, for all n >= 1.
8. Prove the following statement formally.
Suppose f(x) = O(xm) and g(x) = O(xn), where m, n are positive integers. Then
f(x)*g(x) = O(xm+n).
ANSWER:
Proof: By defnition of big-Oh notation and the given assumptions on f and g, we
know there exist c1, c2, x1, x2 such that
f(x) <= c1 * xm (for all x >= x1) and g(x) <= c2 * xn (for all x >=
x2).
Since m, n are positive integers, we get
f(x) * g(x) < = c1 * c2 * x(m+n), for all x >= max(x1, x2).
So, we can take c = c1 * c2, and n0 = max(x1, x2).
9. The closed form for fibonacci sequence is given/solved as follows.
a. Verify that this formula produces the same values as the recurrence
relation for n = 1 and 2.
ANSWER:

For n = 1:
o Recurrence: f(1) = 1 ... by definition of fibonacci sequence
o Closed form:


So, frecurrence (1) = fclosed (1).
For n = 2:
o Recurrence: f(2) = 2 ... by definition of fibonacci sequence
o
Closed form:

So, frecurrence (2) = fclosed (2).
b. Prove by strong mathematical induction that this formula is correct.
ANSWER:
Theorem: Fibonacci sequence defined recursively as
f(n) = f(n-1) + f(n-2), f(1) = 1, f(2) = 2
has an equivalent closed form
Proof: by strong mathematical induction.
Basic Step (n = 1, 2): As shown in part a. ... (A)
Inductive Step: Assume the closed form holds for all f(i), 1 <= i < n.
Show the closed form holds for f(n).
From (A) and (B), the theorem is true.
10. A recursive algorithm find_min, which finds the minimum of a finite sequence of
numbers, is given as follows (Section 3.4, Exercise #12).
Input: The sequence s1, s2, .., sn and the length n of the sequence.
Output: The minimum value in the sequence.
procedure find_min(s, n)
1. if n = 1 then
2.
return s1
3. else
4.
begin
5.
x := find_min(s, n-1)
6.
if x < sn then
7.
return x
8.
else
9.
return sn
end find_min
Let T(n) be the number of times the comparison x < sn (line 6) is performed in the
worst case.
a. Find a recurrence relation and an initial condition for T(n).
ANSWER: T(n) = T(n-1) + 1, T(1) = 0
b. Solve the recurrence relation you answered in a. and derive a closed form.
ANSWER: I skip the derivation here, assuming you know how to do this
very well already. The closed form is
T(n) = n - 1, for all n >= 1
Download