文档库 最新最全的文档下载
当前位置:文档库 › dp_s04

dp_s04

dp_s04
dp_s04

Practice Dynamic Programming Problems

Brian Dean,Spring2002

Although dynamic programming is a simple technique it can be di?cult to master.One of the best ways to learn to recognize and solve DP problems is by working through as many examples as possible.Below are listed quite a few problems which have DP solutions(they appear roughly in increasing order of di?culty, in the opinion of your TA,and some of the later ones are actually quite tricky).For each problem,try to identify the“state space”and a recursive formula that relates the optimal solution of a large problem to optimal solutions of smaller subproblems.See if you can identify similarities between some of the problems.

Example:The Integer Knapsack Problem(Duplicate Items Permitted).You have n types of items,where the i th item type has an integer size s i and a real value v i.You are trying to?ll a knapsack of total capacity C with a selection of items of maximum value.You can add multiple items of the same type to the knapsack.

Solution:Let M(j)denote the maximum value you can pack into a size j knapsack.We can express M(j) recursively in terms of solutions to smaller problems as follows:

M(j)=

max{M(j?1),max

i=1...n

M(j?s i)+v i}if j≥1

0if j≤0

Computing each M(j)value will requireΘ(n)time,and we need to sequentially compute C such values. Therefore,total running time isΘ(nC).Total space isΘ(C).The value of M(C)will contain the value of the optimal knapsack packing.We can reconstruct the list of items in the optimal solution by maintaining and following“backpointers”(see the textbook,pages346and354,for more detail).

1.Maximum Value Contiguous Subsequence.Given a sequence of n real numbers A1...A n,deter-mine a contiguous subsequence A i...A j for which the sum of elements in the subsequence is maximized.

2.Making Change.You are given n types of coin denominations of values v1

3.Longest Increasing Subsequence.Given a sequence of n real numbers A1...A n,determine a sub-sequence(not necessarily contiguous)of maximum length in which the values in the subsequence form a strictly increasing sequence.

4.Box Stacking.You are given a set of n types of rectangular3-D boxes,where the i th box has height h i, width w i and depth d i(all real numbers).You want to create a stack of boxes which is as tall as possible, but you can only stack a box on top of another box if the dimensions of the2-D base of the lower box are each strictly larger than those of the2-D base of the higher box.Of course,you can rotate a box so that any side functions as its base.It is also allowable to use multiple instances of the same type of box.

5.Building Bridges.Consider a2-D map with a horizontal river passing through its center.There are n cities on the southern bank with x-coordinates a1...a n and n cities on the northern bank with x-coordinates b1...b n.You want to connect as many north-south pairs of cities as possible with bridges such that no two bridges cross.When connecting cities,you are only allowed to connect the the i th city on the northern bank to the i th city on the southern bank.

6.Integer Knapsack Problem(Duplicate Items Forbidden).This is the same problem as the ex-ample above,except here it is forbidden to use more than one instance of each type of item.

7.Balanced Partition.You have a set of n integers each in the range0...K.Partition these integers into two subsets such that you minimize|S1?S2|,where S1and S2denote the sums of the elements in each

of the two subsets.

8.Edit Distance.Given two text strings A of length n and B of length m,you want to transform A into

B with a minimum number of operations of the following types:delete a character from A,insert a character into A,or change some character in A into a new character.The minimal number of such operations required to transform A into B is called the edit distance between A and B.

9.Counting Boolean Parenthesizations.You are given a boolean expression consisting of a string of the symbols’true’,’false’,’and’,’or’,and’xor’.Count the number of ways to parenthesize the expression such that it will evaluate to true.For example,there is only1way to parenthesize’true and false xor true’such that it evaluates to true.

10.Optimal Strategy for a Game.Consider a row of n coins of values v1...v n,where n is even.We play a game against an opponent by alternating turns.In each turn,a player selects either the?rst or last coin from the row,removes it from the row permanently,and receives the value of the coin.Determine the maximum possible amount of money we can de?nitely win if we move?rst.

11.Two-Person Traversal of a Sequence of Cities.You are given an ordered sequence of n cities, and the distances between every pair of cities.You must partition the cities into two subsequences(not necessarily contiguous)such that person A visits all cities in the?rst subsequence(in order),person B visits all cities in the second subsequence(in order),and such that the sum of the total distances travelled by A and B is minimized.Assume that person A and person B start initially at the?rst city in their respective subsequences.

12.Bin Packing(Simpli?ed Version).You have n1items of size s1,n2items of size s2,and n3items of size s3.You’d like to pack all of these items into bins each of capacity C,such that the total number of bins used is minimized.

相关文档