COP 3530
Fall 1999
Self Diagnostic Test
1.
The algorithmic (programming) techniques of
recursion
and
iteration
can be related to the mathematical proof technique of
induction
in a
manner that allows inductive proofs of
correctness
and
run-time complexity
.
Show this relationship by proving that the first of the
following two code segments correctly computes N
2
, for N
≥
0, and that the second has run time complexity 2
N
–1, N
≥
1.
In this latter case,
we base complexity on the number of recursive calls made.
function
sq(N :
integer) : integer;
begin
if
N<=0
then
sq := 0
else
sq := 2*N – 1 + sq(N-1)
end
;
{ sq }
HINT
: Prove S(N): sq(N) = N
2
, N
≥
0
procedure
Move (n:integer; X, Y, Z:char);
begin
if
n = 1
then
writeln('Move ', X, ' to ', Y)
else
begin
Move (n-1, X, Z, Y);
writeln('Move ', X, ' to ', Y);
Move (n-1, Z, Y, X)
end
end
;
{ Move }
HINT
: Prove S(N): T(N) = 2
N
–1, N
≥
1, where T(1) = 1; T(N) = 2
*
T(N–1) + 1, N>1.
2.
There are many competing abstract implementations for a dictionary, three of which are a
sorted linear list
(not a linked list), a
balanced
binary search tree
and a
trie
.
Focusing on the lookup only, I have given informal algorithms and analyses of the costs of looking up a
word.
Discuss the
pros and cons
of each abstract implementation. Be sure to
specify the complexity of the other operations
(insert and
delete) for each implementation.
lookup
sorted linear list
Start in the middle of the list. If the word is found, report success.
If not, and the new word is less than the one in the middle, ignore the
bottom half, focusing on the top half of list only. Otherwise, ignore the top half, focusing on the bottom only. If you run out of words in the
list, report failure. The search takes O(logN) operations.
balanced binary search tree
Traverse the tree, starting at its root. Move left any time the word being looked up is less than that in the node you’re visiting; move right if
it’s greater; stop the search if it’s equal or there are no more nodes. If found, report success. If
out of nodes, report failure. The search takes
O(logN) operations.
trie
© C. E. Hughes, UCF Computer Science
– 3 –
COP 3530 Fall ‘99