# Quiz #2 Introduction to Algorithms by hcj

VIEWS: 196 PAGES: 5

• pg 1
```									                                       Quiz #3 Introduction to Algorithms (5/20/2009)

Name:                                       ID#:                                        Score:
1.   (28%) Please use bottom-up recursive dynamic programming algorithm to find the optimal
filled by applying recurrence relations are shown in text book.
a.   (18%) Give a chain of matrix A1A2A3A4 their dimension as following, parenthesize the
product A1A2A3A4 to minimize the number of scalar multiplications. Please fill m(i, j) table
as the minimum number of multiplications to compute matrix, and s(i, j) table as value of k,
where 1≦ k <4 such that the optimal parenthesization of A1A2A3A4 splits between Ak and
Ak+1.

matrix        dimension
A1            2x3

A2            3x5

A3            5x4

A4            4x2

1.      m(i, j) table
j
i        1                         2                  3              4

1        0                         30                 70             82

2        0                         0                  60             70

3        0                         0                  0              40

4        0                         0                  0              0

2. S(i, j) table
j
i             2            3           4

1             1            2           1

2             0            2           2

3             0            0           3

b.     (10%) Let us consider the 0-1 knapsack problem given by the following data with
knapsack’s capacity = 5, please find the most valuable subset of the items that fit into the
knapsack.

Item         weight        value

1
1       2        \$12
2       1        \$10
3       3        \$20
4       2        \$15
Capacity W
Item    0              1               2                3                    4    5
0       0              0               0                0                    0    0
1       0              0               12               12                   12   12
2       0              10              12               22                   22   22
3       0              10              12               22                   30   32
4       0              10              15               25                   30   37
2.    (30%) A carpenter has a piece of wood of a certain length that must be cut at positions a1, a2 ...,
an where ai is the distance from the left end of the original piece of wood. Notice that after making
the first cut, the carpenter now has two pieces of wood; after making the second cut, the carpenter
has three pieces of wood, etc. Assume that the cost of making a cut in a piece of wood of length l
is equal to l, and is the same no matter which position in that piece of wood is being cut. Let L be
the length of the original piece of wood.
a.   [5 points] Derive the recurrence relation which could be used to design a recursive algorithm
to find the minimum total cost for making all the cuts.

We define that:
C[i,j] is the minimum cost of the cut of the wood whose end positions are i and j
respectively.
lij is the length of the wood whose end positions are i and j respectively.
A recurrence is defined as follows:
                0 if i  j  1
C[i, j ]   min  C[i, k ]  C[k , j ]  l if i  j  1   .
i  k  j                       ij

b.   [9 points] Describe a top-down recursive dynamic programming algorithm to find the
minimum total cost for making all the cuts that minimizes the total cost.

2
TD-Carpenter(i, j)
initialize c[i,j] = 0 if i≦j+1 otherwise c[i,j]= NIL
if ( c[i,j] = NIL)
temp1= TD-Carpenter (i,i+1)+ TD-Carpenter(i+1,j)
for (k=i+2; k<j ;k++)
temp2= TD-Carpenter (i,k)+ TD-Carpenter(k,j)
if (temp2<temp1)
temp1=temp2
c[i,j]=temp1+lij
return c[i,j]

c.   [16 points] Give a 100 meter wood with 4 cut points at position a1, a2 ..., a4 = {12, 25, 56, 81}
meter, use bottom-up recursive dynamic programming algorithm to find the minimum total
cost for making all the cuts and the order in which to make the cuts that minimizes the total
cost.

1.     Cost table
j
i          0 (0)           1 (12)       2 (25)        3 (56)          4 (81)          5 (100)

0          0               0            25            81              162             225

1          0               0            0             44              103             176

2          0               0            0             0               56              119

3          0               0            0             0               0               44

4          0               0            0             0               0               0

2. Cut table
j
i      1       2       3   4        5

0      0       1       2   2 or 3   3

1      0       0       2   3        3

2      0       0       0   3        3

3      0       0       0   0        4

4      0       0       0   0        0

3.    (10 points) Consider the following problem: You have two computers C1 and C2 , and a set of n
programs, {P1, P2 ,..., Pn } to be run. Let Ti be the time required to run program Pi . Assume that
3
each computer runes one program at a time. You are to assign the programs to the computers so
that the total execution time for all the programs is minimized.
a.   (7 %) Give a greedy algorithm to solve the problem.
Answer: First, sort the programs by their execution times. Then, assign the
programs one-by-one to the computers, starting from the longest program and
proceeding to the shortest, each time placing the next longest program on the
computer that has the least execution time. The running time of the greedy
algorithm is dominated by the time required to sort the programs.

b.   (3 %) What is the running time of your proposed algorithm?
Answer: If we use an O(n log n) sort, the running time of the algorithm is O(n log
n)
4.   (10%) Construct a Huffman tree and Huffman codes for the letter a, b, c, d, e, and f with
corresponding to frequencies 6, 11, 7, 9, 18, and 2.

a : 1011
b : 01
c : 100
d : 00
e : 11
f : 1010

programming problem satisfies the optimal substructure property, then a locally optimal solution
is a globally optimal.
Answer: False. A greedy problem has a property which a locally optimal solution is a globally
optimal.

6.   (12%)      Let G = (V, E) be a connected, undirected graph with edge-weight function w : E -> R ,
and assume all edge weights are distinct. Consider a cycle (v1, v2,...,vk, vk+1) in G, where vk+1 = v1,
and let (vi, vi+1) be the edge in the cycle with the largest edge weight. Prove that (vi, vi+1) does not
belong to the minimum spanning tree T of G. (Hint: Proof by contradiction)

4
to the minimum spanning tree T. Removing (vi,vi+1) from T divides T into two connected
components P and Q, where some nodes of the given cycle are in P and some are in Q. For any
cycle, at least two edges must cross this cut, and therefore there is some other edge (vj ,vj+1) on
the cycle, such that adding this edge connects P and Q again and creates another spanning tree T’.
Since the weight of (vj,vj+1) is less than (vi,vi+1), the weight of T’ is less than T and T cannot be a