37
Dynamic Programming UNC Chapel Hill Z. Guo

Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Embed Size (px)

Citation preview

Page 1: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Dynamic Programming

UNC Chapel Hill Z. Guo

Page 2: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Optimization Problems

• In which a set of choices must be made in order to arrive at an optimal (min/max) solution, subject to some constraints. (There may be several solutions to achieve an optimal value.)

• Two common techniques:– Dynamic Programming (global)– Greedy Algorithms (local)

Page 3: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Dynamic Programming• Dynamic Programming is an algorithm design technique for

optimization problems: often minimizing or maximizing.• Like divide and conquer, DP solves problems by combining

solutions to subproblems.• Unlike divide and conquer, subproblems may overlap.

– Subproblems may share subsubproblems,– However, solution to one subproblem may not affect the solutions to

other subproblems of the same problem. (More on this later.)• DP reduces computation by

– Solving subproblems in a bottom-up fashion.– Storing solution to a subproblem the first time it is solved.– Looking up the solution when subproblem is encountered again.

• Key: determine structure of optimal solutionsUNC Chapel Hill

Page 4: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Steps in Dynamic Programming1. Characterize structure of an optimal solution.2. Define value of optimal solution recursively.3. Compute optimal solution values either top-

down with caching or bottom-up in a table.4. Construct an optimal solution from computed

values.We’ll study these with the help of two examples.

Matrix MultiplicationLongest Common Subsequence

UNC Chapel Hill

Page 5: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Matrix Multiplication• In particular for 1 i p and 1 j r,

C[i, j] = k = 1 to q A[i, k] B[k, j]

• Observe that there are pr total entries in C and each takes O(q) time to compute, thus the total time to multiply 2 matrices is pqr.

Page 6: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Chain Matrix Multiplication

• Given a sequence of matrices A1 A2…An , and dimensions p0 p1…pn where Ai is of dimension pi-1 x pi , determine multiplication sequence that minimizes the number of operations.

• This algorithm does not perform the multiplication, it just figures out the best order in which to perform the multiplication.

Page 7: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Example: CMM

• Consider 3 matrices: A1 be 5 x 4, A2 be 4 x 6, and A3 be 6 x 2.

Mult[((A1 A2)A3)] = (5x4x6) + (5x6x2) = 180

Mult[(A1 (A2A3 ))] = (4x6x2) + (5x4x2) = 88

Even for this small example, considerable savings can be achieved by reordering the evaluation sequence.

Page 8: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Naive Algorithm• If we have just 1 item, then there is only one way to

parenthesize. If we have n items, then there are n-1 places where you could break the list with the outermost pair of parentheses, namely just after the first item, just after the 2nd item, etc. and just after the (n-1)th item.

• When we split just after the kth item, we create two sub-lists to be parenthesized, one with k items and the other with n-k items. Then we consider all ways of parenthesizing these. If there are L ways to parenthesize the left sub-list, R ways to parenthesize the right sub-list, then the total possibilities is LR.

Page 9: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Cost of Naive Algorithm• The number of different ways of parenthesizing n items is

P(n) = 1, if n = 1

P(n) = k = 1 to n-1 P(k)P(n-k), if n 2

• This is related to Catalan numbers (which in turn is related to the number of different binary trees on n nodes). Specifically P(n) = C(n-1).

C(n) = (1/(n+1)) C(2n, n) (4n / n3/2)

where C(2n, n) stands for the number of various ways to choose n items out of 2n items total.

Page 10: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

DP Solution (I)• Let Ai…j be the product of matrices i through j. Ai…j is a pi-1 x pj matrix. At the

highest level, we are multiplying two matrices together. That is, for any k, 1 k n-1,

A1…n = (A1…k)(Ak+1…n)

• The problem of determining the optimal sequence of multiplication is broken up into 2 parts: Q : How do we decide where to split the chain (what k)?A : Consider all possible values of k.Q : How do we parenthesize the subchains A1…k & Ak+1…n?A : Solve by recursively applying the same scheme.NOTE: this problem satisfies the “principle of optimality”.

• Next, we store the solutions to the sub-problems in a table and build the table in a bottom-up manner.

Page 11: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

DP Solution (II)

• For 1 i j n, let m[i, j] denote the minimum number of multiplications needed to compute Ai…j .

• Example: Minimum number of multiplies for A3…7

98

]7,3[

7654321 AAAAAAAAAm

In terms of pi , the product A3…7 has

dimensions ____.

Page 12: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

DP Solution (III)

• The optimal cost can be described be as follows:– i = j the sequence contains only 1 matrix, so m[i, j] = 0.– i < j This can be split by considering each k, i k < j,

as Ai…k (pi-1 x pk ) times Ak+1…j (pk x pj).

• This suggests the following recursive rule for computing m[i, j]:

m[i, i] = 0

m[i, j] = mini k < j (m[i, k] + m[k+1, j] + pi-1pkpj ) for i < j

Page 13: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Computing m[i, j]

• For a specific k, (Ai …Ak)( Ak+1 … Aj)

=

m[i, j] = mini k < j (m[i, k] + m[k+1, j] + pi-1pkpj )

Page 14: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Computing m[i, j]

• For a specific k, (Ai …Ak)( Ak+1 … Aj)

= Ai…k( Ak+1 … Aj) (m[i, k] mults)

m[i, j] = mini k < j (m[i, k] + m[k+1, j] + pi-1pkpj )

Page 15: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Computing m[i, j]

• For a specific k, (Ai …Ak)( Ak+1 … Aj)

= Ai…k( Ak+1 … Aj) (m[i, k] mults)

= Ai…k Ak+1…j (m[k+1, j] mults)

m[i, j] = mini k < j (m[i, k] + m[k+1, j] + pi-1pkpj )

Page 16: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Computing m[i, j]

• For a specific k, (Ai …Ak)( Ak+1 … Aj)

= Ai…k( Ak+1 … Aj) (m[i, k] mults)

= Ai…k Ak+1…j (m[k+1, j] mults)

= Ai…j (pi-1 pk pj mults)

m[i, j] = mini k < j (m[i, k] + m[k+1, j] + pi-1pkpj )

Page 17: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Computing m[i, j]

• For a specific k, (Ai …Ak)( Ak+1 … Aj)

= Ai…k( Ak+1 … Aj) (m[i, k] mults)

= Ai…k Ak+1…j (m[k+1, j] mults)

= Ai…j (pi-1 pk pj mults)

• For solution, evaluate for all k and take minimum.

m[i, j] = mini k < j (m[i, k] + m[k+1, j] + pi-1pkpj )

Page 18: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Matrix-Chain-Order(p)1. n length[p] - 12. for i 1 to n // initialization: O(n) time3. do m[i, i] 04. for L 2 to n // L = length of sub-chain5. do for i 1 to n - L+1 6. do j i + L - 1 7. m[i, j] 8. for k i to j - 1 9. do q m[i, k] + m[k+1, j] + pi-1 pk pj

10. if q < m[i, j]11. then m[i, j] q12. s[i, j] k13. return m and s

Page 19: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Example: DP for CMM• The initial set of dimensions are <5, 4, 6, 2, 7>: we are

multiplying A1 (5x4) times A2 (4x6) times A3 (6x2) times A4

(2x7). Optimal sequence is (A1 (A2A3 )) A4.

Page 20: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Analysis

• The array s[i, j] is used to extract the actual sequence (see example).

• There are 3 nested loops and each can iterate at most n times, so the total running time is (n3).

Page 21: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Extracting Optimum Sequence• Leave a split marker indicating where the best split is (i.e.

the value of k leading to minimum values of m[i, j]). We maintain a parallel array s[i, j] in which we store the value of k providing the optimal split.

• If s[i, j] = k, the best way to multiply the sub-chain Ai…j is to first multiply the sub-chain Ai…k and then the sub-chain Ak+1…j , and finally multiply them together. Intuitively s[i, j] tells us what multiplication to perform last. We only need to store s[i, j] if we have at least 2 matrices & j > i.

Page 22: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Mult (A, i, j)

1. if (j > i)

2. then k = s[i, j]

3. X = Mult(A, i, k) // X = A[i]...A[k]

4. Y = Mult(A, k+1, j) // Y = A[k+1]...A[j]

5. return X*Y // Multiply X*Y

6. else return A[i] // Return ith matrix

Page 23: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

UNC Chapel Hill

Finding a Recursive Solution• Figure out the “top-level” choice you have

to make (e.g., where to split the list of matrices)

• List the options for that decision• Each option should require smaller sub-

problems to be solved• Recursive function is the minimum (or max)

over all the options

m[i, j] = mini k < j (m[i, k] + m[k+1, j] + pi-1pkpj )

Page 24: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Longest Common Subsequence

• Problem: Given 2 sequences, X = x1,...,xm and Y = y1,...,yn, find a common subsequence whose length is maximum.

springtime ncaa tournament basketball

printing north carolina Zhishan

Subsequence need not be consecutive, but must be in order.

UNC Chapel Hill

Page 25: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Naïve Algorithm

• For every subsequence of X, check whether it’s a subsequence of Y .

• Time: Θ(n2m).– 2m subsequences of X to check.– Each subsequence takes Θ(n) time to check:

scan Y for first letter, for second, and so on.

UNC Chapel Hill

Page 26: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Optimal Substructure

Notation:

prefix Xi = x1,...,xi is the first i letters of X.

This says what any longest common subsequence must look like; do you believe it?

Theorem Let Z = z1, . . . , zk be any LCS of X and Y .

1. If xm = yn, then zk = xm = yn and Zk-1 is an LCS of Xm-1 and Yn-1.

2. If xm yn, then either zk xm and Z is an LCS of Xm-1 and Y .

3. or zk yn and Z is an LCS of X and Yn-1.

Theorem Let Z = z1, . . . , zk be any LCS of X and Y .

1. If xm = yn, then zk = xm = yn and Zk-1 is an LCS of Xm-1 and Yn-1.

2. If xm yn, then either zk xm and Z is an LCS of Xm-1 and Y .

3. or zk yn and Z is an LCS of X and Yn-1.

UNC Chapel Hill

Page 27: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Optimal Substructure

Proof: (case 1: xm = yn)

Any sequence Z’ that does not end in xm = yn can be made longer by adding xm = yn to the end. Therefore,

(1) longest common subsequence (LCS) Z must end in xm = yn.

(2) Zk-1 is a common subsequence of Xm-1 and Yn-1, and

(3) there is no longer CS of Xm-1 and Yn-1, or Z would not be an LCS.

Theorem Let Z = z1, . . . , zk be any LCS of X and Y .

1. If xm = yn, then zk = xm = yn and Zk-1 is an LCS of Xm-1 and Yn-1.

2. If xm yn, then either zk xm and Z is an LCS of Xm-1 and Y .

3. or zk yn and Z is an LCS of X and Yn-1.

Theorem Let Z = z1, . . . , zk be any LCS of X and Y .

1. If xm = yn, then zk = xm = yn and Zk-1 is an LCS of Xm-1 and Yn-1.

2. If xm yn, then either zk xm and Z is an LCS of Xm-1 and Y .

3. or zk yn and Z is an LCS of X and Yn-1.

UNC Chapel Hill

Page 28: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Optimal Substructure

Proof: (case 2: xm yn, and zk xm)

Since Z does not end in xm,

(1) Z is a common subsequence of Xm-1 and Y, and

(2) there is no longer CS of Xm-1 and Y, or Z would not be an LCS.

Theorem Let Z = z1, . . . , zk be any LCS of X and Y .

1. If xm = yn, then zk = xm = yn and Zk-1 is an LCS of Xm-1 and Yn-1.

2. If xm yn, then either zk xm and Z is an LCS of Xm-1 and Y .

3. or zk yn and Z is an LCS of X and Yn-1.

Theorem Let Z = z1, . . . , zk be any LCS of X and Y .

1. If xm = yn, then zk = xm = yn and Zk-1 is an LCS of Xm-1 and Yn-1.

2. If xm yn, then either zk xm and Z is an LCS of Xm-1 and Y .

3. or zk yn and Z is an LCS of X and Yn-1.

UNC Chapel Hill

Page 29: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Recursive Solution• Define c[i, j] = length of LCS of Xi and Yj .

• We want c[m,n].

. and 0, if])1,[],,1[max(

, and 0, if1]1,1[

,0or 0 if0

],[

ji

ji

yxjijicjic

yxjijic

ji

jic

. and 0, if])1,[],,1[max(

, and 0, if1]1,1[

,0or 0 if0

],[

ji

ji

yxjijicjic

yxjijic

ji

jic

This gives a recursive algorithm and solves the problem.But does it solve it well?

Page 30: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Recursive Solution

.)end( )end( if]),[],,[max(

,)end( )end( if1],[

,empty or empty if0

],[

prefixcprefixc

prefixprefixcc

.)end( )end( if]),[],,[max(

,)end( )end( if1],[

,empty or empty if0

],[

prefixcprefixc

prefixprefixcc

c[springtime, printing]

c[springtim, printing] c[springtime, printin]

[springti, printing] [springtim, printin] [springtim, printin] [springtime, printi]

[springt, printing] [springti, printin] [springtim, printi] [springtime, print]

Page 31: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Recursive Solution

.)end( )end( if]),[],,[max(

,)end( )end( if1],[

,empty or empty if0

],[

prefixcprefixc

prefixprefixcc

.)end( )end( if]),[],,[max(

,)end( )end( if1],[

,empty or empty if0

],[

prefixcprefixc

prefixprefixcc

p r i n t i n g

s

p

r

i

n

g

t

i

m

e

•Keep track of c[] in a table of nm entries:

•top/down

•bottom/up

Page 32: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Computing the length of an LCSLCS-LENGTH (X, Y)1. m ← length[X]2. n ← length[Y]3. for i ← 1 to m4. do c[i, 0] ← 05. for j ← 0 to n6. do c[0, j ] ← 07. for i ← 1 to m8. do for j ← 1 to n9. do if xi = yj

10. then c[i, j ] ← c[i1, j1] + 111. b[i, j ] ← “ ”12. else if c[i1, j ] ≥ c[i, j1]13. then c[i, j ] ← c[i 1, j ]14. b[i, j ] ← “↑”15. else c[i, j ] ← c[i, j1]16. b[i, j ] ← “←”17. return c and b

LCS-LENGTH (X, Y)1. m ← length[X]2. n ← length[Y]3. for i ← 1 to m4. do c[i, 0] ← 05. for j ← 0 to n6. do c[0, j ] ← 07. for i ← 1 to m8. do for j ← 1 to n9. do if xi = yj

10. then c[i, j ] ← c[i1, j1] + 111. b[i, j ] ← “ ”12. else if c[i1, j ] ≥ c[i, j1]13. then c[i, j ] ← c[i 1, j ]14. b[i, j ] ← “↑”15. else c[i, j ] ← c[i, j1]16. b[i, j ] ← “←”17. return c and b

b[i, j ] points to table entry whose subproblem we used in solving LCS of Xi

and Yj.

c[m,n] contains the length of an LCS of X and Y.

Time: O(mn)

UNC Chapel Hill

Page 33: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Constructing an LCSPRINT-LCS (b, X, i, j)1. if i = 0 or j = 02. then return3. if b[i, j ] = “ ”4. then PRINT-LCS(b, X, i1, j1)5. print xi

6. elseif b[i, j ] = “↑”7. then PRINT-LCS(b, X, i1, j)8. else PRINT-LCS(b, X, i, j1)

PRINT-LCS (b, X, i, j)1. if i = 0 or j = 02. then return3. if b[i, j ] = “ ”4. then PRINT-LCS(b, X, i1, j1)5. print xi

6. elseif b[i, j ] = “↑”7. then PRINT-LCS(b, X, i1, j)8. else PRINT-LCS(b, X, i, j1)

•Initial call is PRINT-LCS (b, X,m, n).•When b[i, j ] = , we have extended LCS by one character. So LCS = entries with in them.•Time: O(m+n)

UNC Chapel Hill

Page 34: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Elements of Dynamic Programming

– Optimal substructure– Overlapping subproblems

UNC Chapel Hill

Page 35: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Optimal Substructure• Show that a solution to a problem consists of making a choice,

which leaves one or more subproblems to solve.• Suppose that you are given this last choice that leads to an

optimal solution.• Given this choice, determine which subproblems arise and how

to characterize the resulting space of subproblems.• Show that the solutions to the subproblems used within the

optimal solution must themselves be optimal. Usually use cut-and-paste.

• Need to ensure that a wide enough range of choices and subproblems are considered.

UNC Chapel Hill

Page 36: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Optimal Substructure• Optimal substructure varies across problem domains:

– 1. How many subproblems are used in an optimal solution.– 2. How many choices in determining which subproblem(s) to use.

• Informally, running time depends on (# of subproblems overall) (# of choices).

• How many subproblems and choices do the examples considered contain?

• Dynamic programming uses optimal substructure bottom up.– First find optimal solutions to subproblems.– Then choose which to use in optimal solution to the problem.

UNC Chapel Hill

Page 37: Dynamic Programming UNC Chapel HillZ. Guo. UNC Chapel Hill Optimization Problems In which a set of choices must be made in order to arrive at an optimal

Overlapping Subproblems

• The space of subproblems must be “small”.• The total number of distinct subproblems is a

polynomial in the input size.– A recursive algorithm is exponential because it solves the

same problems repeatedly.– If divide-and-conquer is applicable, then each problem

solved will be brand new.

UNC Chapel Hill