CSE 101 Homework 4 - UCSD VLSI CAD Laboratory
Transcription
CSE 101 Homework 4 - UCSD VLSI CAD Laboratory
CSE 101 Homework 4 February 20, 2015 CSE 101: Design and Analysis of Algorithms Winter 2015 Homework 4 Due: February 26, 2015 1. Suppose that you are given a set of n jobs, and that each job has a starting time, an ending time that is strictly greater than the starting time, and a profit associated with completing the job (so if a job is not completed then you get no profit). If scheduled, jobs must run from their starting time to their ending time. Find an efficient algorithm that takes in the set of jobs and returns the set of jobs such that no two jobs overlap and the total profit for completing the jobs is maximized. You can assume for simplicity that that starting and ending times are integers, and that if a job ends at time t the next job cannot start until time t + 1. 2. Given a string, find an efficient algorithm that computes the minimum number of letters that must be inserted to make the string into a palindrome. For example, it would take two insertions to turn the word ”loyal” into ”loayaol” and four insertions to turn ”aaaabbb” into ”aaaabbbaaaa”. 3. (DPV textbook, Problem 6.14.) Cutting cloth. You are given a rectangular piece of cloth with dimensions X × Y , where X and Y are positive integers, and a list of n products that can be made using the cloth. For each product i ∈ [1, n] you know that a rectangle of cloth of dimensions ai × bi is needed and that the final selling price is ci . Assume the ai , bi , and ci are all positive integers. You have a machine that can cut any rectangular piece of cloth into two pieces either horizontally or vertically. Design an algorithm that determines the best return on the X × Y piece of cloth, that is, a strategy for cutting the cloth so that the products made from the resulting pieces give the maximum sum of selling prices. You are free to make as many copies of a given product as you wish, or none if desired. 4. (DPV textbook, Problem 6.22.) Give an O(nt) algorithm for the following task. Input: A list of n positive integers a1 , a2 , ..., an ; a positive integer t Question: Does some subset of the ai s add up to t? (You can use each ai at most once.) 5. (DPV textbook, Problem 7.21.) An edge of a flow network is called critical if decreasing the capacity of this edge results in a decrease in the maximum flow. Give an efficient algorithm that finds a critical edge in a network. 6. (DPV textbook, Problem 7.23.) The vertex cover of an undirected graph G = (V, E) is a subset of the vertices which touches every edge-that is, a subset S ⊂ V such that for each edge u, v ∈ E, one or both of of u, v are in S. Show that the problem of finding the minimum vertex cover in a bipartite graph reduces to maximum flow. (Hint : can you relate this to the minimum flow in a related network?) 7. (DPV textbook, Problem 7.11.) Write the dual to the following linear program. max x + y 2x + y ≤ 3 x + 3y ≤ 5 x, y ≥ 0 Find the optimal solutions to both primal and dual linear programs. 1