1997 S

1. (10%) Solve the following recurrence
 * $$x_n=6x_{n-1}-11x_{n-2}+6x_{n-3}$$ for n≥3
 * with $$x_0=2, x_1=5, x_2$$=15

2. (20%) Let G=(V,E) be a simple connected weighted graph where V is the set of all vertices, E is the set of all edges.
 * (a) (3%) Define a minimum spanning tree that G contains.
 * (b) (5%) Is the minimum spanning tree unique? Prove it if it is true; otherwise give a counterexample.
 * (c) (12%) Give any two algorithms to find a minimum spanning tree for a given graph G and derive their time complexities also.

3. (10%) Prove that the worst case lower bound of the convex hull problem is Ω(nlgn).

4. (8%) Prove that 2n-1 comparisons are necessary in the worst case to merge two sorted lists containing n elements each.

5. (12%) Consider the four points on a square as shown below. Solve the bottleneck travelingsalesperson problem approximated by the algorithm introduced in the 9th chapter of the textbook of Prof. R.C.T. Lee. Is the result obtained also optimal?

6. (10%) The transitive closure is a Boolean matrix A such that A[i,j] is 1 if and only if there is a directed path from i to j in the given directed graph G. Compute the transitive closure for the given directed graph with n vertices by using the dynamic programming method.

7. (15%) The k-occurrence problem is defined as follows. Input: an integer k and a sequence X=($$x_1, x_2, ..., x_n$$) of n numbers. Output: the set of all numbers that occur at least k times in X. For example, give X={1.2, 4.3, 6, 1.2, 1.2, 6, 7, 4.1), the output for k=2, 3, and 4 are {1.2,6}, {1.2}, and {}, respectively.
 * (a) (3%) Give a polynomial time algorithm for solving the k-occurrence problem? What is the time complexity of your algorithm?
 * (b) (4%) Give an O(n) time algorithm for the k-occurrence problem under the assumption that all numbers in X are integers smaller than 9$$n^4$$. prove that your algorithm is of O(n) time.
 * (c) (8%) Give an O(n) time algorithm for th k-occurrence problem under the assumption that n/k is an integer constant (e.g., n/k=C, C is a constant). Prove that your algorithm is of O(n) time. (Hint: Pruning and Search)

8. (15%) Let T be a rooted binary tree with a root r. Each edge e in T is associated with a weight w(e). The length of a path in T is the total weight of the edges in the path. Let v be a node in T. We define the bisector node(s) of v as follows: Let r=$$p_0, p_1, p_2, ...p_k$$=v be the unique path from r to v. Let m be half the distance of the path length. If m is appeared at one node $$p_q$$, $$p_q$$ is the unique bisector node of v. Otherwise, if m is occured within an edge ($$p_{q-1}, p_q$$), the pair of nodes ($$p_{q-1}, p_q$$) are bisector nodes of v. Given a rooted tree T, the bisector node problem is to find the bisector nodes for each node v in T. For example, let us consider the following rooted tree T. The bisector nodes of the given tree are r: r, a:(r,a), b:(r,b), c:(a,c), d: a, and e:(b).
 * (a) (8%) Assume that each edge e of T is associated with w(e)=1 (i.e., T is unweighted). Give an O(n) time algorithm for solving the bisector node problem. Prove that your algorithm is of O(n) time. (Hint: Travel the tree in depth-first order.)
 * (b) (7%) Give a polynomial time algorithm for the bisector node problem. (The weight of an edge e in T can be arbitrary real number.) Determine the time-complexity of your algorithm (in big-O notation).