Top Banner
1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming Course contents: ¾ Assembly-line scheduling ¾ Rod cutting ¾ Matrix-chain multiplication ¾ Longest common subsequence ¾ Optimal binary search trees ¾ Applications: optimal polygon triangulation, flip-chip routing, technology mapping for logic synthesis Reading: ¾ Chapter 15
47

1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents: Assembly-line scheduling Rod cutting Matrix-chain multiplication Longest.

Dec 15, 2015

Download

Documents

Shamar Harlow
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

1Spring 2013Unit 4 1

Unit 4: Dynamic Programming

․ Course contents:¾ Assembly-line scheduling¾ Rod cutting¾ Matrix-chain multiplication¾ Longest common subsequence¾ Optimal binary search trees¾ Applications: optimal polygon triangulation, flip-chip routing,

technology mapping for logic synthesis

․ Reading:¾ Chapter 15

Page 2: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

2Spring 2013Unit 4 2

Dynamic Programming (DP) vs. Divide-and-Conquer

․ Both solve problems by combining the solutions to subproblems.

․ Divide-and-conquer algorithms¾ Partition a problem into independent subproblems, solve the

subproblems recursively, and then combine their solutions to solve the original problem.

¾ Inefficient if they solve the same subproblem more than once.

․ Dynamic programming (DP)¾ Applicable when the subproblems are not independent.¾ DP solves each subproblem just once.

Page 3: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

3Spring 2013Unit 4 3

Assembly-line Scheduling

․ An auto chassis enters each assembly line, has parts added at stations, and a finished auto exits at the end of the line.¾ Si,j: the jth station on line i¾ ai,j: the assembly time required at station Si,j

¾ ti,j: transfer time from station Si,j to the j+1 station of the other line.¾ ei (xi): time to enter (exit) line i

station S2,1 S2,2

a1,1 a1,2a1,3 a1,n-1 a1,n

x1

x2

t1,1

t2,1

a2,1 a2,2a2,3 a2,n-1 a2,n

e2

t1,2

t2,2

t1,n-1

t2,n-1

e1

autoexits

chassisenters

line 1

line 2

station S1,1 S1,2 S1,3 S1,n-1 S1,n

S2,3 S2,n-1 S2,n

Page 4: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

4Spring 2013Unit 4 4

Optimal Substructure

․ Objective: Determine the stations to choose to minimize the total manufacturing time for one auto.¾ Brute force: (2n), why?¾ The problem is linearly ordered and cannot be rearranged =>

Dynamic programming? ․ Optimal substructure: If the fastest way through station Si,j is

through S1,j-1, then the chassis must have taken a fastest way from the starting point through S1,j-1.

S1,1 S1,2 S1,3 S1,n-1 S1,n

S2,1 S2,2

a1,1 a1,2 a1,3 a1,n-1 a1,n

x1

x2

t1,1

t2,1

a2,1 a2,2a2,3 a2,n-1 a2,n

e2

t1,2

t2,2

t1,n-1

t2,n-1

e1

autoexits

chassisenters

line 1

line 2S2,3 S2,n-1 S2,n

Page 5: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

5Spring 2013Unit 4 5

Overlapping Subproblem: Recurrence

․ Overlapping subproblem: The fastest way through station S1,j is either through S1,j-1 and then S1,j , or through S2,j-1 and then transfer to line 1 and through S1,j.

․ fi[j]: fastest time from the starting point through Si,j

․ The fastest time all the way through the factoryf* = min(f1[n] + x1, f2[n] + x2)

S1,1 S1,2 S1,3 S1,n-1 S1,n

S2,1 S2,2

a1,1 a1,2 a1,3 a1,n-1 a1,n

x1

x2

t1,1

t2,1

a2,1 a2,2a2,3 a2,n-1 a2,n

e2

t1,2

t2,2

t1,n-1

t2,n-1

e1

autoexits

chassisenters

line 1

line 2S2,3 S2,n-1 S2,n

1 1, 11

1 1, 2 2, 1 1,

1[ ]

min( [ 1] , [ 1] ) 2j j j

e a if jf j

f j a f j t a if j

Page 6: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

6Spring 2013Unit 4 6

Computing the Fastest Time

․ li[j]: The line number whose station j-1 is used in a fastest way through Si,j

Fastest-Way(a, t, e, x, n)1. f1[1] = e1 + a1,1

2. f2[1] = e2 + a2,1

3. for j = 2 to n4. if f1[j-1] + a1,j f2[j-1] + t2,j -1 + a1,j

5. f1[j] = f1[j-1] + a1,j

6. l1[j] = 17. else f1[j] = f2[j-1] + t2,j -1 + a1,j

8. l1[j] = 29. if f2[j-1] + a2,j f1[j-1] + t1,j -1 + a2,j

10. f2[j] = f2[j-1] + a2,j

11. l2[j] = 212. else f2[j] = f1[j-1] + t1,j -1 + a2,j

13. l2[j] = 114. if f1[n] + x1 f2[n] + x2

15. f* = f1[n] + x1 16. l* = 117. else f* = f2[n] + x2

18. l* = 2

Running time?Linear time!!

Page 7: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

7Spring 2013Unit 4 7

Constructing the Fastest Way

Print-Station(l, n)1. i = l*2. Print “line” i “, station “ n3. for j = n downto 24. i = li[j] 5. Print “line “ i “, station “ j-1

S1,1 S1,2 S1,3 S1,5 S1,6

S2,1 S2,2

7 9 3 8 4

3

2

2

2

8 5 6 5 7

4

3

1

4

1

2

autoexits

chassisenters

line 1

line 2

S2,3 S2,5 S2,6

S1,4

4

4

3

2

S2,4

1

2

line 1, station 6line 2, station 5line 2, station 4line 1, station 3line 2, station 2line 1, station 1

Page 8: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

8Spring 2013Unit 4 8

An Example

S1,1 S1,2 S1,3 S1,5 S1,6

S2,1 S2,2

7 9 3 8 4

3

2

2

2

8 5 6 5 7

4

3

1

4

1

2

autoexits

chassisenters

line 1

line 2S2,3 S2,5 S2,6

S1,4

4

4

3

2

S2,4

1

2

9 18 20 24 32 35

12 16 22 25 30 37

1 2 1 1 2

1 2 1 2 2

1 2 3 4 5 6j

f* = 38

l* = 1

f1[j]

f2[j]

l1[j]

l2[j]

Page 9: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

9Spring 2013Unit 4 9

․ Typically apply to optimization problem.․ Generic approach

¾ Calculate the solutions to all subproblems.¾ Proceed computation from the small subproblems to

larger subproblems.¾ Compute a subproblem based on previously computed

results for smaller subproblems.¾ Store the solution to a subproblem in a table and never

recompute.․ Development of a DP

1. Characterize the structure of an optimal solution.2. Recursively define the value of an optimal solution.3. Compute the value of an optimal solution bottom-up.4. Construct an optimal solution from computed information

(omitted if only the optimal value is required).

Dynamic Programming (DP)

Page 10: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

10Spring 2013Unit 4 10

When to Use Dynamic Programming (DP)

․ DP computes recurrence efficiently by storing partial results efficient only when the number of partial results is small.

․ Hopeless configurations: n! permutations of an n-element set, 2n subsets of an n-element set, etc.

․ Promising configurations: contiguous substrings of an n-character string, n(n+1)/2 possible subtrees of a binary search tree, etc.

․ DP works best on objects that are linearly ordered and cannot be rearranged!!¾ Linear assembly lines, matrices in a chain, characters in a

string, points around the boundary of a polygon, points on a line/circle, the left-to-right order of leaves in a search tree, etc.

¾ Objects are ordered left-to-right Smell DP?

1( 1) / 2

n

ii n n

Page 11: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

11Spring 2013Unit 4 11

Rod Cutting․ Cut steel rods into pieces to maximize the revenue

¾ Each cut is free; rod lengths are integral numbers.

․ Input: A length n and table of prices pi, for i = 1, 2, …, n.․ Output: The maximum revenue obtainable for rods whose

lengths sum to n, computed as the sum of the prices for the individual rods.

length i 1 2 3 4 5 6 7 8 9 10

price pi 1 5 8 9 10 17 17 20 24 30

length i = 49 85581

1 1 1 1 1 1

1

1 5 1 51 1 5max revenuer4 = 5+5 =10

5 5

Objects are linearly ordered (and cannot be rearranged)??

Page 12: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

12Spring 2013Unit 4 12

Optimal Rod Cutting

․ If pn is large enough, an optimal solution might require no cuts, i.e., just leave the rod as n unit long.

․ Solution for the maximum revenue ri of length i

r1 = 1 from solution 1 = 1 (no cuts)

r2 = 5 from solution 2 = 2 (no cuts)

r3 = 8 from solution 3 = 3 (no cuts)

r4 = 10 from solution 4 = 2 + 2

r5 = 13 from solution 5 = 2 + 3

r6 = 17 from solution 6 = 6 (no cuts)

r7 = 18 from solution 7 = 1 + 6 or 7 = 2 + 2 + 3

r8 = 22 from solution 8 = 2 + 6

length i 1 2 3 4 5 6 7 8 9 10

price pi 1 5 8 9 10 17 17 20 24 30

max revenue ri 1 5 8 10 13 17 18 22 25 30

)(max),...,,,max(1

112211 inini

nnnnn rprrrrrrpr

Page 13: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

13Spring 2013Unit 4 13

Optimal Substructure

․ Optimal substructure: To solve the original problem, solve subproblems on smaller sizes. The optimal solution to the original problem incorporates optimal solutions to the subproblems.¾ We may solve the subproblems independently.

․ After making a cut, we have two subproblems. ¾ Max revenue r7: r7 = 18 = r4 + r3 = (r2 + r2) + r3 or r1 + r6

․ Decomposition with only one subproblem: Some cut gives a first piece of length i on the left and a remaining piece of length n - i on the right.

length i 1 2 3 4 5 6 7 8 9 10

price pi 1 5 8 9 10 17 17 20 24 30

max revenue ri 1 5 8 10 13 17 18 22 25 30

),...,,,max( 112211 rrrrrrpr nnnnn

)(max1

inini

n rpr

Page 14: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

14Spring 2013Unit 4 14

Recursive Top-Down “Solution”

․ Inefficient solution: Cut-Rod calls itself repeatedly, even on subproblems it has already solved!!

)(max1

inini

n rpr

Cut-Rod(p, n)1. if n == 02. return 03. q = - ∞4. for i = 1 to n5. q = max(q, p[i] + Cut-Rod(p, n -

i))6. return q

1

0

.0 if ),(1

0 if ,1)( n

j

njT

nnT

Cut-Rod(p, 4)

Cut-Rod(p, 3)

Cut-Rod(p, 1)T(n) = 2n

Cut-Rod(p, 0)

Overlapping subproblems?

Page 15: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

15Spring 2013Unit 4 15

Top-Down DP Cut-Rod with Memoization

․ Complexity: O(n2) time ¾ Solve each subproblem just once, and solves subproblems for

sizes 0,1, …, n. To solve a subproblem of size n, the for loop iterates n times.

Memoized-Cut-Rod(p, n)1. let r[0..n] be a new array2. for i = 0 to n3. r[i] = - 4. return Memoized-Cut-Rod -Aux(p, n, r)

Memoized-Cut-Rod-Aux(p, n, r)1. if r[n] ≥ 02. return r[n]3. if n == 04. q = 0 5. else q = - ∞6. for i = 1 to n7. q = max(q, p[i] + Memoized-Cut-Rod -Aux(p, n-i, r))8. r[n] = q9. return q

// Each overlapping subproblem // is solved just once!!

Page 16: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

16Spring 2013Unit 4 16

Bottom-Up DP Cut-Rod

․ Complexity: O(n2) time ¾ Sort the subproblems by size and solve smaller ones first. ¾ When solving a subproblem, have already solved the

smaller subproblems we need.

Bottom-Up-Cut-Rod(p, n)1. let r[0..n] be a new array2. r[0] = 03. for j = 1 to n4. q = - ∞5. for i = 1 to j6. q = max(q, p[i] + r[j – i])7. r[j] = q8. return r[n]

Page 17: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

17Spring 2013Unit 4 17

Bottom-Up DP with Solution Construction

․ Extend the bottom-up approach to record not just optimal values, but optimal choices.

․ Saves the first cut made in an optimal solution for a problem of size i in s[i].

Extended-Bottom-Up-Cut-Rod(p, n)1. let r[0..n] and s[0..n] be new arrays2. r[0] = 03. for j = 1 to n4. q = - ∞5. for i = 1 to j6. if q < p[i] + r[j – i]7. q = p[i] + r[j – i]8. s[j] = i9. r[j] = q10. return r and s

Print-Cut-Rod-Solution(p, n)1. (r, s) = Extended-Bottom-Up-Cut-Rod(p, n)2. while n > 03. print s[n]4. n = n – s[n]

i 0 1 2 3 4 5 6 7 8 9 10

r[i] 0 1 5 8 10 13 17 18 22 25 30

s[i] 0 1 2 3 2 2 6 1 2 3 10

555 5

1 17

Page 18: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

18Spring 2013Unit 4 18

DP Example: Matrix-Chain Multiplication

․ If A is a p x q matrix and B a q x r matrix, then C = AB is a p x r matrix

time complexity: O(pqr).1

[ , ] [ , ] [ , ]q

k

C i j A i k B k j

Matrix-Multiply(A, B)1. if A.columns ≠ B.rows2. error “incompatible dimensions”3. else let C be a new A.rows * B.columns matrix4. for i = 1 to A.rows5. for j = 1 to B.columns6. cij = 07. for k = 1 to A.columns8. cij = cij + aikbkj

9. return C

Page 19: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

19Spring 2013Unit 4 19

DP Example: Matrix-Chain Multiplication

․ The matrix-chain multiplication problem¾ Input: Given a chain <A1, A2, …, An> of n matrices,

matrix Ai has dimension pi-1 x pi

¾ Objective: Parenthesize the product A1 A2 … An to minimize the number of scalar multiplications

․ Exp: dimensions: A1: 4 x 2; A2: 2 x 5; A3: 5 x 1

(A1A2)A3: total multiplications = 4 x 2 x 5 + 4 x 5 x 1 = 60

A1(A2A3): total multiplications = 2 x 5 x 1 + 4 x 2 x 1 = 18

․ So the order of multiplications can make a big difference!

Page 20: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

20Spring 2013Unit 4 20

Matrix-Chain Multiplication: Brute Force

․ A = A1 A2 … An: How to evaluate A using the minimum number of multiplications?

․ Brute force: check all possible orders?¾ P(n): number of ways to multiply n matrices.

¾ , exponential in n.

․ Any efficient solution? ¾ The matrix chain is linearly ordered and

cannot be rearranged!!¾ Smell Dynamic programming?

Page 21: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

21Spring 2013Unit 4 21

Matrix-Chain Multiplication

․ m[i, j]: minimum number of multiplications to compute matrix Ai..j = Ai Ai +1 … Aj, 1 i j n.¾ m[1, n]: the cheapest cost to compute A1..n.

․ Applicability of dynamic programming

¾ Optimal substructure: an optimal solution contains within its optimal solutions to subproblems.

¾ Overlapping subproblem: a recursive algorithm revisits the same problem over and over again; only (n2) subproblems.

matrix Ai has dimension pi-1 x pi

Page 22: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

22Spring 2013Unit 4 22

Bottom-Up DP Matrix-Chain OrderMatrix-Chain-Order(p)1. n = p.length – 12. Let m[1..n, 1..n] and s[1..n-1, 2..n] be new tables3. for i = 1 to n4. m[i, i] = 05. for l = 2 to n // l is the chain length6. for i = 1 to n – l +17. j = i + l -18. m[i, j] = 9. for k = i to j -110. q = m[i, k] + m[k+1, j] + pi-1pkpj

11. if q < m[i, j]12. m[i, j] = q13. s[i, j] = k14. return m and s

s

Ai dimension pi-1 x pi

Page 23: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

23Spring 2013Unit 4 23

Constructing an Optimal Solution․ s[i, j]: value of k such that the optimal parenthesization of

Ai Ai+1 … Aj splits between Ak and Ak+1

․ Optimal matrix A1..n multiplication: A1..s[1, n]As[1, n] + 1..n

․ Exp: call Print-Optimal-Parens(s, 1, 6): ((A1 (A2 A3))((A4 A5) A6))Print-Optimal-Parens(s, i, j)1. if i == j2. print “A”i

3. else print “(“4. Print-Optimal-Parens(s, i, s[i, j])5. Print-Optimal-Parens(s, s[i, j] + 1, j)6. print “)“

s

0

Page 24: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

24Spring 2013Unit 4 24

Top-Down, Recursive Matrix-Chain Order

․ Time complexity: (2n) (T(n) > (T(k)+T(n-k)+1)).1

1

n

k

Recursive-Matrix-Chain(p, i, j)1. if i == j2. return 0

3. m[i, j] = 4. for k = i to j -15 q = Recursive-Matrix-Chain(p,i, k) + Recursive-Matrix-Chain(p, k+1, j) + pi-1pkpj

6. if q < m[i, j]7. m[i, j] = q8. return m[i, j]

Page 25: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

25Spring 2013Unit 4 25

Top-Down DP Matrix-Chain Order (Memoization)

․ Complexity: O(n2) space for m[] matrix and O(n3) time to fill in O(n2) entries (each takes O(n) time)

Memoized-Matrix-Chain(p)1. n = p.length - 12. let m[1..n, 1..n] be a new table2. for i = 1 to n3. for j = i to n

4. m[i, j] = 5. return Lookup-Chain(m, p,1,n)

Lookup-Chain(m, p, i, j)1. if m[i, j] < 2. return m[i, j]3. if i == j4. m[ i, j] = 05. else for k = i to j -16. q = Lookup-Chain(m, p, i, k) + Lookup-Chain(m, p, k+1, j) + pi-1pkpj

7. if q < m[i, j]8. m[i, j] = q9. return m[i, j]

Page 26: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

26Spring 2013Unit 4 26

Two Approaches to DP

1. Bottom-up iterative approach¾ Start with recursive divide-and-conquer algorithm.¾ Find the dependencies between the subproblems (whose

solutions are needed for computing a subproblem).¾ Solve the subproblems in the correct order.

2. Top-down recursive approach (memoization)¾ Start with recursive divide-and-conquer algorithm.¾ Keep top-down approach of original algorithms.¾ Save solutions to subproblems in a table (possibly a lot of

storage).¾ Recurse only on a subproblem if the solution is not already

available in the table.․ If all subproblems must be solved at least once, bottom-up DP is

better due to less overhead for recursion and for maintaining tables.

․ If many subproblems need not be solved, top-down DP is better since it computes only those required.

Page 27: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

27Spring 2013Unit 4 27

Longest Common Subsequence

․ Problem: Given X = <x1, x2, …, xm> and Y = <y1, y2, …, yn>, find the longest common subsequence (LCS) of X and Y.

․ Exp: X = <a, b, c, b, d, a, b> and Y = <b, d, c, a, b, a> LCS = <b, c, b, a> (also, LCS = <b, d, a, b>).․ Exp: DNA sequencing:

¾ S1 = ACCGGTCGAGATGCAG; S2 = GTCGTTCGGAATGCAT; LCS S3 = CGTCGGATGCA

․ Brute-force method:¾ Enumerate all subsequences of X and check if they

appear in Y.¾ Each subsequence of X corresponds to a subset of

the indices {1, 2, …, m} of the elements of X.¾ There are 2m subsequences of X. Why?

Page 28: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

28Spring 2013Unit 4 28

Optimal Substructure for LCS

․ Let X = <x1, x2, …, xm> and Y = <y1, y2, …, yn> be sequences, and Z = <z1, z2, …, zk> be 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 zk ≠ xm implies Z is an LCS of Xm-1 and Y.

3. If xm ≠ yn, then zk ≠ yn implies Z is an LCS of X and Yn-1.

․ c[i, j]: length of the LCS of Xi and Yj

․ c[m, n]: length of LCS of X and Y․ Basis: c[0, j] = 0 and c[i, 0] = 0

Page 29: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

29Spring 2013Unit 4 29

Top-Down DP for LCS

․ c[i, j]: length of the LCS of Xi and Yj, where Xi = <x1, x2, …, xi> and Yj=<y1, y2, …, yj>.

․ c[m, n]: LCS of X and Y.․ Basis: c[0, j] = 0 and c[i, 0] = 0.

․ The top-down dynamic programming: initialize c[i, 0] = c[0, j] = 0, c[i, j] = NIL

TD-LCS(i, j)1. if c[i,j] == NIL2. if xi == yj

3. c[i, j] = TD-LCS(i-1, j-1) + 14. else c[i, j] = max(TD-LCS(i, j-1), TD-LCS(i-1, j))5. return c[i, j]

Page 30: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

30Spring 2013Unit 4 30

Bottom-Up DP for LCS

․ Find the right order to solve the subproblems

․ To compute c[i, j], we need c[i-1, j-1], c[i-1, j], and c[i, j-1]

․ b[i, j]: points to the table entry w.r.t. the optimal subproblem solution chosen when computing c[i, j]

LCS-Length(X,Y)1. m = X.length2. n = Y.length3. let b[1..m, 1..n] and c[0..m, 0..n] be new tables4. for i = 1 to m5. c[i, 0] = 06. for j = 0 to n7. c[0, j] = 08. for i = 1 to m9. for j = 1 to n10. if xi == yj

11. c[i, j] = c[i-1, j-1]+112. b[i, j] = “ ”↖13. elseif c[i-1,j] c[i, j-1]14. c[i,j] = c[i-1, j]15. b[i, j] = `` ''16. else c[i, j] = c[i, j-1]17. b[i, j] = “ “18. return c and b

Page 31: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

31Spring 2013Unit 4 31

Example of LCS

․ LCS time and space complexity: O(mn).․ X = <A, B, C, B, D, A, B> and Y = <B, D, C, A, B, A> LCS = <B,

C, B, A>.

Page 32: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

32Spring 2013Unit 4 32

Constructing an LCS

․ Trace back from b[m, n] to b[1, 1], following the arrows: O(m+n) time.

Print-LCS(b, X, i, j)1. if i == 0 or j == 02. return3. if b[i, j] == “ “↖4. Print-LCS(b, X, i-1, j-1)5. print xi

6. elseif b[i, j] == “ “7. Print-LCS(b, X, i -1, j)8. else Print-LCS(b, X, i, j-1)

Page 33: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

33Spring 2013Unit 4 33

Optimal Binary Search Tree

․ Given a sequence K = <k1, k2, …, kn> of n distinct keys in sorted order (k1 < k2 < … < kn) and a set of probabilities P = <p1, p2, …, pn> for searching the keys in K and Q = <q0, q1, q2, …, qn> for unsuccessful searches (corresponding to D = <d0, d1, d2, …, dn> of n+1 distinct dummy keys with di representing all values between ki and ki+1), construct a binary search tree whose expected search cost is smallest.k2

k1

k3

k4

k5d0 d1

d2 d3 d4d5

k2

k1

k4

k5

k3

d0 d1

d2 d3

d4

d5

p2

q2

p1 p4

p3 p5

q0 q1

q3 q4q5

Page 34: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

34Spring 2013Unit 4 34

An Example

i 0 1 2 3 4 5

pi 0.15 0.10 0.05 0.10 0.20

qi 0.05 0.10 0.05 0.05 0.05 0.10 1 0

1n n

i i

i i

p q

1 0

[search cost in ] = ( ( ) 1) ( ( ) 1)n n

T i i T i i

i i

E T depth k p depth d q

1 0

1 ( ) ( )n n

T i i T i i

i i

depth k p depth d q

Cost = 2.75Optimal!!

k2

k1

k4

k5

k3

d0 d1

d2 d3

d4

d5

Cost = 2.80

k2

k1

k3

k4

k5d0 d1

d2 d3 d4d5

0.10×1 (depth 0)0.15×2

0.10×2

0.10×4

0.20×3

Page 35: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

35Spring 2013Unit 4 35

Optimal Substructure

․ If an optimal binary search tree T has a subtree T’ containing keys ki, …, kj, then this subtree T’ must be optimal as well for the subproblem with keys ki, …, kj and dummy keys di-1, …, dj.¾ Given keys ki, …, kj with kr (i r j) as the root, the left subtree

contains the keys ki, …, kr-1 (and dummy keys di-1, …, dr-1) and the right subtree contains the keys kr+1, …, kj (and dummy keys dr, …, dj).

¾ For the subtree with keys ki, …, kj with root ki, the left subtree contains keys ki, .., ki-1 (no key) with the dummy key di-1.k2

k1

k4

k5

k3

d0 d1

d2 d3

d4

d5

Page 36: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

36Spring 2013Unit 4 36

Overlapping Subproblem: Recurrence

․ e[i, j] : expected cost of searching an optimal binary search tree containing the keys ki, …, kj.¾ Want to find e[1, n].¾ e[i, i -1] = qi-1 (only the dummy key di-1).

․ If kr (i r j) is the root of an optimal subtree containing keys ki, …, kj and let then

e[i, j] = pr + (e[i, r-1] + w(i, r-1)) + (e[r+1, j] +w(r+1, j))

= e[i, r-1] + e[r+1, j] + w(i, j)

․ Recurrence:

1( , )

j jl l

l i l iw i j p q

1 1[ , ] min{ [ , 1] [ 1, ] ( , )}

i

i r j

q if j ie i j e i r e r j w i j if i j

k3

k4

k5

d2 d3 d4d5

0.10×1

0.10×3

0.20×2

Node depths increase by 1 after merging two subtrees, and so do the costs

Page 37: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

37Spring 2013Unit 4 37

Computing the Optimal Cost․ Need a table e[1..n+1, 0..n] for e[i, j] (why e[1, 0] and e[n+1, n]?)

․ Apply the recurrence to compute w(i, j) (why?)

Optimal-BST(p, q, n)1. let e[1..n+1, 0..n], w[1..n+1, 0..n], and root[1..n, 1..n] be new tables 2. for i = 1 to n + 13. e[i, i-1] = qi-1

4. w[i, i-1] = qi-1

5. for l = 1 to n6. for i = 1 to n – l + 17. j = i + l -18. e[i, j] = 9. w[i, j] = w[i, j-1] + pj + qj

10. for r = i to j11. t = e[i, r-1] + e[r+1, j] + w[i, j]12. if t < e[i, j]13. e[i, j] = t14. root[i, j] = r15. return e and root

1 1[ , ]

[ , 1]

i

j j

q if j iw i j

w i j p q if i j

․ root[i, j] : index r for which

kr is the root of an optimal

search tree containing

keys ki, …, kj.

2.752.00

0.50

1.30

0.05

0.90

0.10

1.751.20

0.05

0.600.30

0.900.40

1.250.70

0.250.05

0.450.100.05

0

34

5 12

3

45

6

21

e

j i

k3

k4

k5

d2 d3 d4d5

Page 38: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

38Spring 2013Unit 4 38

Example

2.75

2.00

0.50

1.30

0.05

0.90

0.10

1.75

1.20

0.05

0.60

0.30

0.90

0.40

1.25

0.70

0.25

0.05

0.45

0.100.050

3

45 1

2

3

45

6

21

e

j i

1.00

0.80

0.35

0.60

0.05

0.50

0.10

0.70

0.50

0.05

0.30

0.20

0.45

0.25

0.55

0.35

0.15

0.05

0.30

0.100.050

3

45 1

2

3

45

6

21

w

j i

2 4

5

5 5

2 2

4 4

12

2 2

3 1

34

5 12

34

52

1

root

j i

i 0 1 2 3 4 5

pi 0.15 0.10 0.05 0.10 0.20

qi 0.05 0.10 0.05 0.05 0.05 0.10

k2

k1

k4

k5

k3

d0 d1

d2 d3

d4

d5

e[1, 1] = e[1, 0] + e[2, 1] + w(1,1) = 0.05 + 0.10 + 0.3 = 0.45

e[1, 5] = e[1, 1] + e[3, 5] + w(1,5) = 0.45 + 1.30 + 1.00 = 2.75

Page 39: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

39Spring 2013Unit 4 39

Appendix A: Optimal Polygon Triangulation

․ Terminology: polygon, interior, exterior, boundary, convex polygon, triangulation?

․ The Optimal Polygon Triangulation Problem: Given a convex polygon P = <v0, v1, …, vn-1> and a weight function w defined on triangles, find a triangulation that minimizes w().

․ One possible weight function on triangle:

w(vivjvk)=|vivj| + |vjvk| + |vkvi|,

where |vivj| is the Euclidean distance from vi to vj.

Page 40: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

40Spring 2013Unit 4 40

Optimal Polygon Triangulation (cont'd)

․ Correspondence between full parenthesization, full binary tree (parse tree), and triangulation¾ full parenthesization full binary tree¾ full binary tree (n-1 leaves) triangulation (n sides)

․ t[i, j]: weight of an optimal triangulation of polygon <vi-1, vi, …, vj>.

Page 41: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

41Spring 2013Unit 4 41

Pseudocode: Optimal Polygon Triangulation․ Matrix-Chain-Order is a special case of the optimal polygonal

triangulation problem.․ Only need to modify Line 9 of Matrix-Chain-Order.․ Complexity: Runs in (n3) time and uses (n2) space.

Optimal-Polygon-Triangulation(P)1. n = P.length2. for i = 1 to n3. t[i,i] = 04. for l = 2 to n5. for i = 1 to n – l + 1 6. j = i + l - 17. t[i, j] = 8. for k = i to j-1

9. q = t[i, k] + t[k+1, j ] + w( vi-1 vk vj)10. if q < t[i, j]11. t[i, j] = q12. s[i,j] = k13. return t and s

Page 42: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

42Spring 2013Unit 4

• A tree decomposition:– Tree with a vertex set

called bag associated to every node.

– For all edges {v,w}: there is a set containing both v and w.

– For every v: the nodes that contain v form a connected subtree.

b c

df

a ab c c

cd

g

gf fa e e

a e

Tree decomposition

f

Page 43: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

43Spring 2013Unit 4

Tree decomposition

• A tree decomposition:– Tree with a vertex set

called bag associated to every node.

– For all edges {v,w}: there is a set containing both v and w.

– For every v: the nodes that contain v form a connected subtree.

a ab c c

cd

gf fa e ef

b c

df

ga e

Page 44: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

44Spring 2013Unit 4

• A tree decomposition:– Tree with a vertex set

called bag associated to every node.

– For all edges {v,w}: there is a set containing both v and w.

– For every v: the nodes that contain v form a connected subtree.

Tree decomposition

a ab c c

cd

gf fa e ef

b c

df

ga e

Page 45: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

45Spring 2013Unit 4

Treewidth (definition)

․ Width of tree decomposition:

․ Treewidth of graph G: tw(G)= minimum width over all tree decompositions of G.

a b cd e

f g

1||max iIi X

a ab c c

cd

gf fa e ef

b c

df

ga e

Page 46: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

46Spring 2013Unit 4

Dynamic programming algorithms

․ Many NP-hard (and some PSPACE-hard, or #P-hard) graph problems become polynomial or linear time solvable when restricted to graphs of bounded treewidth (or pathwidth or branchwidth)¾ Well known problems like Independent Set,

Hamiltonian Circuit, Graph Coloring¾ Frequency assignment¾ TSP

Page 47: 1 Spring 2013 Unit 4 1 Unit 4: Dynamic Programming ․ Course contents:  Assembly-line scheduling  Rod cutting  Matrix-chain multiplication  Longest.

47Spring 2013Unit 4

Dynamic programming with tree decompositions

․ For each bag, a table is computed:¾ Contains information

on subgraph formed by vertices in bag and bags below it

¾ Bags are separators =>

¾ Size of tables often bounded by function of width

․ Computing a table needs only tables of children and local information

1 2

3

4

6

5