MS&E 217/317,
Combinatorial Optimization, Autumn
2003-04.Instructor: Ashish Goel
Handout 5
Practice Problems for the
Midterm (Please do not assume that material not covered by these problems is
not kosher for the midterm)
1.
Matroids: MS&E
317 students will have a choice of answering a matroid question.
(a)
Problem 8.6
(b)
Problem 8.8
(c)
An alternative definition
that we could use for a matroid keeps the same M0 and M1, but uses the
following property M2’ as opposed to the property M2 discussed in the class and
in the text:
(M2’) If
A,B are both in I,
and |A| < |B|, then there exists an element e in B-A such that A U {e} is
also in I.
This is called the exchange
property. Prove that this is an equivalent definition of a matroid.
2. Spanning
Trees.
(a)
Give an algorithm to find a
spanning tree of a weighted, undirected graph which minimizes the maximum
weight edge in the tree.
(b)
Problem 2.10.
3.
Shortest Path Trees.
(a)
Problem 2.18.
(b)
Problem 2.22.
(c)
Problem 2.24.
(d)
How would you modify
Bellman-Ford to not just find whether a negative cycle exists, but also to
output the negative cost cycle?
4. Dynamic
Programming:
(a)
There are n villages situated
along the river Amazon. Let x_1, x_2, … x_n represent the positions of these
villages along the river. Assume that the (i+1)-th village is downstream from
the i-th village, i.e., j > i => x_j > x_i. A motorized ferry runs
along the river, and the plan is to choose k villages to construct ferry
stations. If there is no ferry station in a village, the villagers must use
pedal boats to go to the next downstream station. Let d_i denote the
distance from the i-th village to the nearest downstream station, and let D =
d_1 + d_2 + …. + d_n. Give an efficient algorithm to find the minimum possible
value of D as well as the choice of the
k villages which results in this minimum value. Analyze the running time of
your algorithm.
(b)
A total of n-1 stepping
stones were placed at one meter intervals across a river that is n meters wide.
Over time, some of these stones got washed away. For 1 <= i <= n-1, A[i]
= 1 if the i-th stepping stone is still there, and A[i] = 0 if this stone got
washed away. A baby kangaroo wants to cross this river. Unfortunately the kangaroo can make only two
kinds of jumps -- either k_1 meters or k_2 meters. You are given n, A, k_1, k_2
as input. Write a dynamic programming
formulation to find out whether the kangaroo can cross the river, and if yes,
the minimum number of leaps it needs to make. What is the running time of your
algorithm? Assume that the kangaroo must start jumping from the bank i.e. from
the point i = 0 and is allowed to land anywhere on the opposite side i.e. at
any i >= n. Is this a polynomial time
algorithm?