CS 1501
Algorithm Implementation
Exam 2
Name:
___________________________________
PeopleSoft
ID or Last 4 Digits of SSN: ________________
|
Problem |
Possible Pts |
Pts Received |
|
1 |
20 |
|
|
2 |
10 |
|
|
3 |
12 |
|
|
4 |
10 |
|
|
5 |
8 |
|
|
6 |
16 |
|
|
7 |
8 |
|
|
8 |
8 |
|
|
9 |
8 |
|
|
Total |
100 |
|
For all questions, be sure to show your work. Answers without work will not receive full
credit.
1)
(20
points – 2 points each) Fill in the Blanks. Complete the
statements with the MOST APPROPRIATE
word(s) and/or phrase(s).
a)
The sum 1 + 2 + 3 + … + N evaluates to
____________________________________.
b) If a program's run-time can be
modeled by the function 8N5/2
+ 2N2(3lgN + 6N) , the program's Theta runtime growth rate is
_______________________.
c) The Boyer-Moore string matching algorithm can do as few as Theta
(__________________________) comparisons for an unsuccessful search of a pattern
of length M within a string of
length N.
d) Collisions can
be avoided in a hash table as long
as the table size, M, is greater
than or equal to _______________________________________.
e) A block code containing b
bits can encode _________________________ distinct values.
f)
The Unix
compress implementation of LZW tries to use as few bits as possible in the
codewords that it outputs, so as to maximize compression. However, it still allows for a large number
of distinct codewords. It accomplishes
both of these goals by __________________________________________
___________________________________________________________________________________.
g)
Run-time analysis of recursive algorithms is typically done via
________________________________.
h)
An undirected
graph with V vertices has a minimum of _______________________
edges and a maximum of
________________________ edges.
i)
PFS on a graph with V vertices and E edges runs in time
___________________________ with an adjacency list and in time
__________________________ with an adjacency matrix.
j)
A sequence of N Inserts followed by
2)
(10 points – 2 points each) Indicate if each of the
following statements is TRUE or FALSE.
For FALSE statements, INDICATE
WHY THEY ARE FALSE.
a)
The "branch
and bound" technique reduces worst
case run-times for search algorithms from exponential to polynomial run-times.
b)
DLBs are an
improvement over regular multiway tries because they have faster search times.
c)
If someone comes up with a factoring algorithm that is 1,000,000 times faster than current
factoring algorithms, RSA will no longer be a useful encryption scheme.
d)
NP-Complete problems
are problems that are known to require exponential run-times.
e)
If I discover a true polynomial
algorithm that solves the Traveling Salesman Problem, I will have proved
that P = NP.
3) (12
points – 4 + 4 + 4) Consider RSA encryption
a) Show
(using pictures and explanation in detail) how an RSA Envelope (or digital envelope) works, and why it is used.
b) Creating new RSA keys
requires generating large random prime
integers. Explain the general approach
discussed in lecture for generating large random prime numbers, and how its
run-time can be determined (note: since this is only a general algorithm, a
specific overall run-time is not required).
c) I'd like to send my friend a
message such that 1) Only he can read it
(no one else) and such that 2) He can
verify that I was the sender and that it wasn't tampered with. Explain how I could do this using RSA. Be specific, and assume that any RSA keys can
be authenticated to their owners.
4) (10 points – 6 + 4) Consider the simple,
naïve algorithm (using a loop) we discussed in lecture for raising an N-bit
integer to an integer power (i.e. XY for N-bit integers X and
Y).
a) Write a Java method to calculate this value, using the BigInteger
class. Your method should return a new BigInteger that is the current
BigInteger raised to the argument BigInteger power. Use the header below:
public
BigInteger pow(BigInteger Y) // Return this
raised to the Y
{ // power
b) Assuming the Gradeschool algorithm is used for
multiplication, state and thoroughly
justify the Theta run-time for exponentiation using the code you
wrote in part a) above in terms of N.
5) (8
points) An array representation of a min-heap
data structure is shown below. Draw
the resulting array after the operation Insert(28). For full credit
show your work.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
|
15 |
30 |
20 |
35 |
60 |
55 |
25 |
45 |
50 |
80 |
|
6) (16
points – 8 + 8) Consider the graph below with the
edge weights shown. Assume the vertices
are stored in alphabetical order, using an adjacency matrix.

a)
Complete
the table below, as it would look after a Depth-First Search Spanning
Tree (starting from vertex A) were created for the graph. val[] is the DFS visit order
for the vertex, and dad[] is
the parent vertex in the DFS
tree. Show your work above or in the
space below the table for partial credit.
|
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
|
val |
|
|
|
|
|
|
|
|
|
|
dad |
|
|
|
|
|
|
|
|
|
b)
Complete
the table below, as it would look after a Minimum Spanning Tree
(starting from vertex A) were created for the graph, assuming Prim's Algorithm
is used. val[] is the edge weight
associated with the vertex, and dad[] is the parent vertex in the MST. Show your work above or in the space below
the table for partial credit.
|
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
|
val |
|
|
|
|
|
|
|
|
|
|
dad |
|
|
|
|
|
|
|
|
|
7) (8 points)
Consider the weighted graph below. The numbers are the edge capacities. S is the source vertex and
T is the sink vertex.

![]()
Using the BREADTH FIRST SEARCH implementation of the Ford-Fulkerson
algorithm, show EACH AUGMENTING PATH generated (in
the correct order that the paths are generated), the amount of flow for
each path, and the Maximum Flow for the graph.
Assume that an adjacency matrix implementation is used, and that the
vertices are listed in the adjacency matrix in the following order: S, A, B, C, D, E, T. To ensure full / partial credit, be sure to
SHOW YOUR WORK.
8)
(8
points) Consider
the 2-OPT local search algorithm for
the Traveling Salesman Problem. Consider the complete graph below and an
initial tour of the graph ABCDEA of
weight 25.

Show all of the neighbors of this tour, indicate the neighbor that is chosen and show the resulting tour. Note
that this is just ONE ITERATION of the 2-OPT algorithm. Show your work.
9)
(8 points – 4 + 4) Consider the size and store arrays below, as discussed in
lecture
|
index |
1 |
2 |
3 |
4 |
5 |
6 |
|
size |
3 |
10 |
5 |
6 |
4 |
14 |
|
index |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
store |
|
|
|
|
|
|
|
|
|
|
|
|
a) Fill the values into the store
array as it would look after a dynamic programming solution to the Subset Sum
problem were found for M = 12. Show any work below.
b) Assuming that there are N items in the size array, what is the
run-time of this algorithm? Why is this
run-time only considered to be "pseudo"
polynomial? Explain.