27
Introduction to Algorithms Chapter 15: Dynamic Programming Chapter 15: Dynamic Programming Dynamic Programming Dynamic Programming Well known algorithm design techniques: B t F (it ti ) l ith Brute-Force (iterative) algorithms Divide-and-conquer algorithms Another strategy for designing algorithms is dynamic programming. Used when problem breaks down into recurring small subproblems Dynamic programming is typically applied to optimization problems optimization problems. In such problem there can be many solutions. Each solution has a value, and we wish to find a solution with the optimal value. Divide-and-conquer Divide-and-conquer Divide-and-conquer method for algorithm design: Divide-and-conquer method for algorithm design: Divide: If the input size is too large to deal with in a Divide: If the input size is too large to deal with in a straightforward manner, divide the problem into two or more disjoint subproblems Conquer: conquer recursively to solve the subproblems Combine: Take the solutions to the subproblems and Combine: Take the solutions to the subproblems and “merge” these solutions into a solution for the original problem Divide-and-conquer - Example Divide-and-conquer - Example

Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Embed Size (px)

Citation preview

Page 1: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Introduction to Algorithms

Chapter 15: Dynamic ProgrammingChapter 15: Dynamic Programming

Dynamic ProgrammingDynamic ProgrammingWell known algorithm design techniques:

B t F (it ti ) l ithBrute-Force (iterative) algorithmsDivide-and-conquer algorithms

Another strategy for designing algorithms is dynamic programming.p g g

Used when problem breaks down into recurring small subproblems

Dynamic programming is typically applied to optimization problemsoptimization problems.

In such problem there can be many solutions. Each solution has a value, and we wish to find a solution with the optimalvalue.

Divide-and-conquerDivide-and-conquerDivide-and-conquer method for algorithm design:Divide-and-conquer method for algorithm design:

Divide: If the input size is too large to deal with in aDivide: If the input size is too large to deal with in a straightforward manner, divide the problem into two or more disjoint subproblemsj p

Conquer: conquer recursively to solve the subproblemsq q y p

Combine: Take the solutions to the subproblems andCombine: Take the solutions to the subproblems and “merge” these solutions into a solution for the original problem

Divide-and-conquer - ExampleDivide-and-conquer - Example

Page 2: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Dynamic programmingDynamic programmingDynamic programming is a way of improving on y p g g y p ginefficient divide-and-conquer algorithms.

By “inefficient” we mean that the same recursive callBy inefficient , we mean that the same recursive call is made over and over.

If same subproblem is solved several times we can useIf same subproblem is solved several times, we can use table to store result of a subproblem the first time it is computed and thus never have to recompute it again.

Dynamic programming is applicable when the subproblems are dependent, that is, when subproblems p p , , pshare subsubproblems.

“Programming” refers to a tabular methodProgramming refers to a tabular method

Difference between DP and Divide-Difference between DP and Divideand-Conquer

Using Divide-and-Conquer to solve these bl i i ffi i t b thproblems is inefficient because the same

common subproblems have to be solved timany times.

DP will solve each of them once and their answers are stored in a table for future useanswers are stored in a table for future use.

Elements of Dynamic Programming (DP)Elements of Dynamic Programming (DP)DP is used to solve problems with the followingDP is used to solve problems with the following

characteristics:

Simple subproblemsSimple subproblems We should be able to break the original problem to smaller subproblems that have the same structuresmaller subproblems that have the same structure

Optimal substructure of the problems Th ti l l ti t th bl t i ithiThe optimal solution to the problem contains within optimal solutions to its subproblems.

O l i b blOverlapping sub-problems there exist some places where we solve the same subproblem more than oncesubproblem more than once.

Steps to Designing a DynamicSteps to Designing a Dynamic Programming Algorithm

1. Characterize optimal substructure

2. Recursively define the value of an optimal l isolution

3 Compute the value bottom up3. Compute the value bottom up

4 (if needed) Construct an optimal solution4. (if needed) Construct an optimal solution

Page 3: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Fibonacci NumbersFibonacci NumbersFn= Fn-1+ Fn-2 n ≥ 2Fn Fn 1+ Fn 2 n ≥ 2

F0 = 0, F1 = 1, 1

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

Straightforward recursive procedure is slow!

Let’s draw the recursion tree

Fibonacci NumbersFibonacci Numbers

Fibonacci NumbersFibonacci NumbersWe can calculate Fn in linear time by remembering solutions to the solved subproblems – dynamic programming

Compute solution in a bottom-up fashion

In this case, only two values need to be remembered at any timeremembered at any time

Ex1:Assembly-line schedulingEx1:Assembly line schedulingCars factory with two assembly lines.

Each line has the same number “n” of stations. Numbered j = 1, 2, ..., n.

We denote the jth station on line i (where i is 1 or 2) by Si,j .

The jth station on line 1 (S1,j) performs the same function as the jthstation on line 2 (S )station on line 2 (S2,j ).

The time required at each station varies, even between stations at the same position on the two different lines, as each assembly line hassame position on the two different lines, as each assembly line has different technology.

time required at station Si,j is (ai,j) .,j ,j

There is also an entry time (ei) for the chassis to enter assembly line iand an exit time (xi) for the completed auto to exit assembly line i.

Page 4: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Ex1:Assembly line schedulingEx1:Assembly-line schedulingAfter going through station S can eitherAfter going through station Si,j, can either

q stay on same lineq stay on same linenext station is Si,j+1

no transfer cost , or,

q transfer to other linenext station is S3-i,j+1

transfer cost from Si,j to S3-i,j+1 is ti,j ( j = 1, … , n–1)No ti,n because the assembly line is complete after Si,n

13

Ex1:Assembly-line schedulingy g•(Time between adjacent stations are nearly 0).

Problem DefinitionProblem Definition Problem: Given all these costs, what stations should be chosen from line 1 and from line 2 for minimizing the total time for car assembly.

“Brute force” is to try all possibilitiesBrute force is to try all possibilities.requires to examine Ω(2n) possibilities

Trying all 2n subsets is infeasible when n is large.

Simple example : 2 stations (2n) possibilities =4

Step 1: Optimal Solution StructureStep 1: Optimal Solution Structure

optimal substructure : choosing the best path p g pto Sij.

The structure of the fastest way through the factory (from the starting point)factory (from the starting point)

The fastest possible way to get through Si,1 (i = 1, 2)

Only one way: from entry starting point to Si,1take time is entry time (ei)

Page 5: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 1: Optimal Solution StructureStep 1: Optimal Solution Structure The fastest possible way to get through Si,j (i = 1, 2) (j = 2, 3 ) T h i3, ..., n). Two choices:

Stay in the same line: Si,j-1 Si,jTime is T + aTime is Ti,j-1 + ai,j

If the fastest way through Si j is throughg i,j gSi,j-1, it must have taken a fastest way through Sthrough Si,j-1

Transfer to other line: S3-i,j-1 Si,j3 i,j 1 i,jTime is T3-i,j-1 + t3-i,j-1 + ai,j

Same as above

Step 1: Optimal Solution StructureStep 1: Optimal Solution Structure

An optimal solution to a problemAn optimal solution to a problemfinding the fastest way to get through Si,j

contains within it an optimal solution to sub-problemscontains within it an optimal solution to sub problemsfinding the fastest way to get through either Si,j-1 or S3-i,j-1

Fastest way from starting point to Si j is either:y g p i,j

The fastest way from starting point to Si,j-1 and then directly from Si,j-1 to Si,j

orThe fastest way from starting point to S3-i,j-1 then a transfer from line 3-i to line i and finally to Si jy i,j

Optimal Substructure.

ExampleExample

Page 6: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 2: Recursive SolutionStep 2: Recursive SolutionDefine the value of an optimal solution recursively in

f h i l l i b blterms of the optimal solution to sub-problems

S b bl hSub-problem here finding the fastest way through station j on both lines (i=1,2)Let fi [j] be the fastest possible time to go from starting point i [j] p g g pthrough Si,j

The fastest time to go all the way through the factory: f*The fastest time to go all the way through the factory: f*

x1 and x2 are the exit times from lines 1 and 2, respectivelyp y

Step 2: Recursive SolutionStep 2: Recursive Solution

The fastest time to go through SThe fastest time to go through Si,je1 and e2 are the entry times for lines 1 and 2

ExampleExample

Page 7: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

ExampleExample Step 2: Recursive SolutionStep 2: Recursive SolutionTo help us keep track of how to construct anTo help us keep track of how to construct an optimal solution, let us define

li[j ]: line # whose station j-1 is used in a fastest wayli[j ]: line # whose station j 1 is used in a fastest way through Si,j (i = 1, 2, and j = 2, 3,..., n)

we avoid defining li[1] because no station precedes station 1 on either lines.

We also definel*: the line whose station n is used in a fastest way through the entire factory

Step 2: Recursive SolutionStep 2: Recursive SolutionUsing the values of l* and li[j] shown in Figure (b) in next slide we would trace a fastest way through the factoryslide, we would trace a fastest way through the factory shown in part (a) as follows

The fastest total time comes from choosing stations Line 1: 1, 3, & 6 Line 2: 2, 4, & 5

Step 2: Recursive SolutionStep 2: Recursive Solution

Page 8: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 3: Optimal Solution ValueStep 3: Optimal Solution Value Step 3: Optimal Solution ValueStep 3: Optimal Solution Value

2

Step 3: Optimal Solution ValueStep 3: Optimal Solution Value

2

Step 3: Optimal Solution ValueStep 3: Optimal Solution Value

Use substitution method to solve it O(2n) exponential

Page 9: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 3: Optimal Solution ValueStep 3: Optimal Solution Value Step 3: Optimal Solution ValueStep 3: Optimal Solution Value

Step 3: Optimal Solution ValueStep 3: Optimal Solution Value Step 4: Optimal SolutionStep 4: Optimal Solution

Constructing the fastest way through theConstructing the fastest way through the factory

Page 10: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Multiplying MatricesMultiplying MatricesTwo matrices A with (p x q) matrix and B with (q x r)Two matrices, A with (p x q) matrix and B with (q x r) matrix, can be multiplied to get C with dimensions p x r, using scalar multiplicationsg p

37

Multiplying Matricesp y g

38

Ex2: Matrix-chain multiplicationEx2: Matrix chain multiplication

We are given a sequence (chain) <A1 A2 An> of nWe are given a sequence (chain) <A1, A2, ..., An> of n matrices to be multiplied, and we wish to compute the product. A1.A2…An.p

Matrix multiplication is associative, and so all p ,parenthesizations yield the same product,

(A1 (A2 (A3 A4)))(A1 (A2 (A3 A4))),(A1 ((A2 A3) A4)),((A1 A2) (A3 A4))((A1 A2) (A3 A4)),((A1 (A2 A3)) A4),(((A1 A2) A3) A4).

39

((( ) ) )

M t i h i lti li ti tMatrix-chain multiplication – cont.

We can multiply two matrices A and B only if they are compatible

the number of columns of A must equal the number of rows of Bthe number of columns of A must equal the number of rows of B.

If A is a p × q matrix and B is a q × r matrix the resultingIf A is a p × q matrix and B is a q × r matrix, the resulting matrix C is a p × r matrix.

The time to compute C is dominated by the number of scalar multiplications, which is p q r. p p q

40

Page 11: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Matrix-chain multiplication – contMatrix chain multiplication cont.Ex: consider the problem of a chain <A1, A2, A3> of three matrices with the dimensions of 10 × 100 100 × 5 and 5 × 50matrices, with the dimensions of 10 × 100, 100 × 5, and 5 × 50, respectively.

If we multiply according to ((A1 A2) A3) we perform 10 · 100 · 5 =If we multiply according to ((A1 A2) A3), we perform 10 · 100 · 5 = 5000 scalar multiplications to compute the 10 × 5 matrix product A1 A2, plus another 10 · 5 · 50 = 2500 scalar multiplications to multiply this matrix byA3 for a total of 7500 scalar multiplications

If instead , we multiply as (A1 (A2 A3)), we perform 100 · 5 · 50 = p y ( ( )) p25,000 scalar multiplications to compute the 100 × 50 matrix product A2 A3, plus another 10 · 100 · 50 = 50,000 scalar multiplications to multiply A1 by this matrix for a total of 75 000multiplications to multiply A1 by this matrix, for a total of 75,000 scalar multiplications.Thus, computing the product according to the first

41

, p g p gparenthesization is 10 times faster.

Matrix-chain multiplication – contMatrix chain multiplication cont.Matrix multiplication is associativep

(AB)C = A(BC)

The parenthesization matters

Consider A X B X C X D, whereA is 30x1, B is 1x40, C is 40x10, D is 10x25

Costs:((AB)C)D 1200 + 12000 + 7500 20700((AB)C)D = 1200 + 12000 + 7500 = 20700(AB)(CD) = 1200 + 10000 + 30000 = 41200A((BC)D) = 400 + 250 + 750 = 1400

42

A((BC)D) 400 250 750 1400

Matrix Chain Multiplication (MCM) ProblemMatrix Chain Multiplication (MCM) ProblemInput:p

Matrices A1, A2, …, An, each Ai of size pi-1 x pi,

Output:Fully parenthesised product A1 x A2 x … x An that minimizes the number of scalar multiplicationsminimizes the number of scalar multiplications.

Note:Note:In MCM problem, we are not actually multiplying matricesO l i l t d t i d f lti l iOur goal is only to determine an order for multiplying matrices that has the lowest cost

43

Matrix Chain Multiplication (MCM) ProblemMatrix Chain Multiplication (MCM) Problem

Typically the time invested in determining thisTypically, the time invested in determining this optimal order is more than paid for by the time saved later on when actually performing thesaved later on when actually performing the matrix multiplications

So, exhaustively checking all possible parenthesizations does not yield an efficientparenthesizations does not yield an efficient algorithm

44

Page 12: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Counting the Number of ParenthesizationsCounting the Number of ParenthesizationsDenote the number of alternative parenthesizations of a

f ( ) t i b P( ) th f llsequence of (n) matrices by P(n) then a fully parenthesized matrix product is given by:

(A1 (A2 (A3 A4))) , (A1 ((A2 A3) A4)) ,

If n = 4 <A1,A2,A3,A4> then the number of alternative parenthesis is =5 P(4) =P(1) P(4 1) + P(2) P(4 2) + P(3) P(4 3) ((A1 A2) (A3 A4)) ,

((A1 (A2 A3)) A4) , (((A1 A2) A3) A4).

P(4) =P(1) P(4-1) + P(2) P(4-2) + P(3) P(4-3)= P(1) P(3) + P(2) P(2) + P(3) P(1)= 2+1+2=5

P(3) =P(1) P(2) + P(2) P(1) = 1+1=2P(2) =P(1) P(1)= 1

45

P(2) =P(1) P(1)= 1

Counting the Number of ParenthesizationsCounting the Number of Parenthesizations

46

Step 1: Optimal Sub-structureStep 1: Optimal Sub-structure

47

Step 1: Optimal Sub-structureStep 1: Optimal Sub-structure

48

Page 13: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 1: Optimal Sub-structureStep 1: Optimal Sub structure

49

Step 1: Optimal Sub-structureStep 1: Optimal Sub structure

50

Step 2: Recursive SolutionStep 2: Recursive SolutionFor MCM, sub-problems are:

problems of determining the min-cost of a parenthesization of Ai Ai+1…Aj for 1 <= i <= j <= n

Let m[i, j] = min # of scalar multiplications d d t t th t i Ai jneeded to compute the matrix Ai...j.

For the whole problem, we need to find m[1, n]

Since Ai..j can be obtained by breaking it into Ai k Ak 1 j W h ( h Ai f i i 1 i)Ai..k Ak+1..j, We have (each Ai of size pi-1 x pi)

m[i, j] = m[i, k] + m[k+1, j] + pi-1pkpj

51

Step 2: Recursive SolutionStep 2: Recursive Solution

52

Page 14: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 3: Computing the Optimal Costsp p g p

53

Elements of Dynamic Programmingy g g

54

Overlapping Sub-problemsOverlapping Sub-problems

55

Step 3: Computing the Optimal Costsp p g pThe following code assumes that matrix Ai has dimensions pi-1 x pi for i =1,2, …, np p , , ,

56

Page 15: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 3: Computing the Optimal Costsp p g p

57

Step 3: Computing the Optimal CostsStep 3: Computing the Optimal Costs

58

Step 3: Computing the Optimal CostsStep 3: Computing the Optimal Costs

59

Step 3: Computing the Optimal CostsStep 3: Computing the Optimal Costs

60

Page 16: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 3: Computing the Optimal CostsStep 3: Computing the Optimal Costs

61

Step 3: Computing the Optimal CostsStep 3: Computing the Optimal Costs

62

Step 4: Constructing an Optimal SolutionStep 4: Constructing an Optimal Solution

Although Matrix-Chain-Order determines theAlthough Matrix-Chain-Order determines the optimal number of scalar multiplications needed to compute a matrix-chain product itneeded to compute a matrix chain product, it does not directly show how to multiply the matricesmatrices

Using table s we can construct an optimalUsing table s, we can construct an optimal solution

63

Step 4: Constructing an Optimal SolutionStep 4: Constructing an Optimal Solution

64

Page 17: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Step 4: Constructing an Optimal SolutionStep 4: Constructing an Optimal Solution

65

Step 4: Constructing an Optimal SolutionStep 4: Constructing an Optimal Solution

66

Step 4: Constructing an Optimal SolutionStep 4: Constructing an Optimal Solution

67

Example: Matrix Chain MultiplicationWhat if we want to multiply a string of more than two matrices together?

Example: Matrix Chain Multiplication

together? Matrix multiplication is associative, that is A(BC) = (AB)C, so the result is the same no matter in what order we multiply thethe result is the same no matter in what order we multiply the matrices, but it can make a big difference in the amount of work that is done.work that is done.

A1 x A2 x A3 x A4

30 x 1 1 x 40 40 x 10 10 x 2530 x 1 1 x 40 40 x 10 10 x 25((A1A2)A3)A4 30*1*40 + 30*40*10 + 30*10*25 = 20,700A (A (A A )) 40*10*25 1*40*25 30*1*25 11 750A1(A2(A3A4)) 40*10*25 + 1*40*25 + 30*1*25 = 11,750(A1A2)(A3A4) 30*1*40 + 40*10*25 + 30*40*25 = 41,200

68

A1((A2A3)A4) 1*40*10 + 1*10*25 + 30*1*25 = 1,400

Page 18: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

A1 x A2 x A3 x A430 x 1 1 x 40 40 x 10 10 x 25

[1] [2] [3] [4]0 [1]0 [1]

0 [2]0 [3]

0 [4]0 [4]First, the costs of multiplying

h i f l th 1 i iti li d t 0chains of length 1 are initialized to 0

69

A1 x A2 x A3 x A430 x 1 1 x 40 40 x 10 10 x 25A1 x A2

30*1*40

A2 x A31*40*10

[1] [2] [3] [4]0 1200 [1]

30 1 40A3 x A440*10*25

0 1200 [1]0 400 [2]

0 10000 [3]0 [4]0 [4]

Then the costs of multiplying chains of length 2 are calculated

(only one way to multiply chains of length two)

70

chains of length two)

A1 x A2 x A3 x A430 x 1 1 x 40 40 x 10 10 x 25

[1] [2] [3] [4]0 1200 7000 1200 700 [1]

0 400 650 [2]0 10000 [3]

0 [4]BEST 0 [4]A1 x (A2 x A3)

0 400 30*1*10 700

BEST

Then the best way to multiplychains of length 3 are calculated

0 + 400 + 30*1*10 = 700

(A x A ) x A

71

(A1 x A2) x A31200 + 0 + 30*40*10 = 13,200

A1 x A2 x A3 x A430 x 1 1 x 40 40 x 10 10 x 25

[1] [2] [3] [4]0 1200 7000 1200 700 [1]

0 400 650 [2]0 10000 [3]

0 [4]0 [4]

A2 x (A3 x A4)0 + 10,000 + 1*40*25 = 11,000 (A2 x A3) x A4 BEST

72

2 3 4400 + 0 + 1*10*25 = 650

Page 19: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

A1 x A2 x A3 x A4Then the best way to 30 x 1 1 x 40 40 x 10 10 x 25

yMultiply the entire chain is calculated

[1] [2] [3] [4]0 1200 700 1400 [1]0 1200 700 1400 [1]

0 400 650 [2]0 10000 [3]

0 [4]BEST 0 [4]

A1 x (A2 x A3 x A4)0 650 30*1*25 1400 (A1 x A2 x A3 ) x A4

BEST

0 + 650 + 30*1*25 = 1400

(A x A )(A x A )

(A1 x A2 x A3 ) x A4700 + 0 + 30*10*25 = 10,450

73

(A1 x A2 )(A3 x A4)1200 + 10,000 + 30*40*25 = 41,200

A1 x A2 x A3 x A41 2 3 4

30 x 1 1 x 40 40 x 10 10 x 25

cost = [1] [2] [3] [4]

0 1200 700 1400 [1]0 400 650 [2]0 400 650 [2]

0 10000 [3]0 [4]

split =0 [4]

[2] [3] [4]1 1 1 [1]

the array split is used to reconstruct the

2 3 [2]3 [3]

to reconstruct theoptimal ordering

74

Dynamic Programming SolutionDynamic Programming SolutionPRINT-OPTIMAL-PARENS(split i j)PRINT-OPTIMAL-PARENS(split, i, j)

if(i == j) // base case -- chain of length 1, just print Ai

print “A”print A ielse

print “(“print (PRINT-OPTIMAL-PARENS(split, i, split[i,j])PRINT OPTIMAL PARENS(split split[i j]+1 j)PRINT-OPTIMAL-PARENS(split, split[i,j]+1, j)print “)”

75

[2] [3] [4]1 1 1 [1]

2 3 [2]2 3 [2]3 [3]P-O-P(split,1,4) [ ]( p , , )

P-O-P(split,1,1) P-O-P(split,2,4)

P-O-P(split,2,3) P-O-P(split,4,4)O (sp , ,3) O (sp , , )

P-O-P(split,2,2) P-O-P(split,3,3)( p , , ) ( p , , )

76

A1 A2 A3 A4)(( )( )

Page 20: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Longest Common SubsequenceLongest Common SubsequenceIn biological applications we often want toIn biological applications, we often want to compare the DNA of two (or more) different organismsorganisms.

A t d f DNA i t f t i fA strand of DNA consists of a string of molecules called bases, where the possible bases are adenine quanine cytosine andbases are adenine, quanine, cytosine, and thymine (A, C, G, T).

Longest Common SubsequenceLongest Common SubsequenceSimilarity can be defined in different ways:

Two DNA strands are similar if one is a substring of the other.

Two strands are similar if the number of changes d d t t i t th th i llneeded to turn one into the other is small.

Th i thi d t d S i hi h th b iThere is a thirds strand S3 in which the bases in S3 appear in each of S1 and S2; these bases must appear in the same order but notmust appear in the same order, but not necessarily consecutively. The longer the strand S3 we can find, the more similar S1 and S2 are.

Example of Longest CommonExample of Longest Common Subsequence

LCS for S1 and S2:

S1=ACCGGTCGAGTGCGCGGAAGCCGGCCGAAS1 ACCGGTCGAGTGCGCGGAAGCCGGCCGAAS2=GTCGTTCGGAATGCCGTTGCTCTGTAAAS3=GTCGTCGGAAGCCGCCGAA

ExampleExample

X = ⟨A, B, C, B, D, A, B⟩ X = ⟨A, B, C, B, D, A, B⟩

Y = ⟨B, D, C, A, B, A⟩ Y = ⟨B, D, C, A, B, A⟩

⟨B, C, B, A⟩ and ⟨B, D, A, B⟩ are longest common subsequences of X and Y (length = 4)

⟨B, C, A⟩, however is not a LCS of X and Y

Page 21: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

LCS Brute-force solutionLCS Brute-force solutionEnumerate all subsequences of X and checkEnumerate all subsequences of X and check each subsequence to see if it is also a subsequence of Y keeping track of thesubsequence of Y, keeping track of the longest subsequence found.

Each subsequence of X corresponds to a subset of the indices 1, 2, …, m of X.

There are 2m subsequences of X.

Exponential Time!

A Recursive SolutionA Recursive Solution

Case 1: x = yCase 1: xi = yj

e.g.: X = ⟨A, B, D, E⟩

Y = ⟨Z, B, E⟩

c[i, j] = c[i - 1, j - 1] + 1

Append xi = yj to the LCS of Xi-1 and Yj-1

Must find a LCS of X and Y ⇒ optimal solution toMust find a LCS of Xi-1 and Yj-1 ⇒ optimal solution to a problem includes optimal solutions to sub problems

A Recursive SolutionA Recursive SolutionCase 2: xi ≠ yj

e.g.: X = ⟨A, B, D, G⟩

Y = ⟨Z, B, D⟩⟨ ⟩

c[i, j] = max c[i - 1, j], c[i, j-1]

Must solve two problems

fi d LCS f X d Y X ⟨A B D⟩ d Y ⟨Z B D⟩find a LCS of Xi-1 and Yj: Xi-1 = ⟨A, B, D⟩ and Yj = ⟨Z, B, D⟩

find a LCS of Xi and Yj-1: Xi = ⟨A, B, D, G⟩ and Yj = ⟨Z, B⟩

Optimal solution to a problem includes optimal solutions to subproblems

Computing the Length of the LCSComputing the Length of the LCS

Page 22: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Additional InformationAdditional Information LCS-Length(X, Y) // dynamic programming solutionLCS Length(X, Y) // dynamic programming solutionm = X.length()n = Y.length()for i = 0 to m do c[i,0] = 0for j = 0 to n do c[0,j] = 0 O(nm)for i = 1 to m do // rowfor i = 1 to m do // row

for j = 1 to n do // cloumnif xi = =yi thenif xi yi then

c[i,j] = c[i-1,j-1] + 1b[i,j] =“ ”

else if c[i-1, j] ≥ c[i,j-1] thenc[i,j] = c[i-1,j]b[i j] = “^”b[i,j] = ^

else c[i,j] = c[i,j-1]b[i,j] = “<”b[ ,j]

j 0 1 2 3 4 5 6

i y j B D C A B A

0 x i 0 0 0 0 0 0 0

1 A 0

2 B 0

3 C 03 0

4 B 0D 0

First Optimal-LCS initializes row 0 and column 0

5 D 0

6 A 0

7 B 0

j 0 1 2 3 4 5 6

i y j B D C A B A

0 x i 0 0 0 0 0 0 0

1 A 0 0 0 0 1 1 1

0 0 0 0 0 0^ ^ ^ <

2 B 0 1 1 1 1 2 2

3 C 0 1 1 2

< < ^ <^ ^3 0 1 1 2

4 B 0D 0 Next each c[i j] is computed row5 D 0

6 A 0

Next each c[i, j] is computed, rowby row, starting at c[1,1].

If xi == yj then c[i, j] = c[i-1, j-1]+17 B 0

If xi yj then c[i, j] c[i 1, j 1] 1 and b[i, j] =

Page 23: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

j 0 1 2 3 4 5 6

i y j B D C A B A

0 x i 0 0 0 0 0 0 0

1 A 0 0 0 0 1 1 1

0 0 0 0 0 0^ ^ ^ <

2 B 0 1 1 1 1 2 2

3 C 0 1 1 2 2

< < ^ <^ ^ <3 0 1 1 2 2

4 B 0D 0

<

5 D 0

6 A 0If xi <> yj then c[i, j] = max(c[i-1, j], c[i, j-1])

and b[i j] points to the larger value7 B 0 and b[i, j] points to the larger value

j 0 1 2 3 4 5 6

i y j B D C A B A

0 x i 0 0 0 0 0 0 0

1 A 0 0 0 0 1 1 1

0 0 0 0 0 0^ ^ ^ <

2 B 0 1 1 1 1 2 2

3 C 0 1 1 2 2 2

< < ^ <^ ^ < ^3 0 1 1 2 2 2

4 B 0D 0

<

5 D 0

6 A 0if c[i-1, j] == c[i, j-1] then b[i,j] points up

7 B 0

j 0 1 2 3 4 5 6

i y j B D C A B A

0 0 0 0 0 0^ ^ ^ <

0 x i 0 0 0 0 0 0 0

1 A 0 0 0 0 1 1 1< < ^ <

^ ^ < ^ ^2 B 0 1 1 1 1 2 2

3 C 0 1 1 2 2 2 2<^ ^ ^ <

^ ^ ^ ^ ^

3 0 1 1 2 2 2 2

4 B 0 1 1 2 2 3 3D 0 1 2 2 2 3 3

^ ^ ^ ^

^ ^ ^ ^

5 D 0 1 2 2 2 3 3

6 A 0 1 2 2 3 3 4^ ^ ^ ^7 B 0 1 2 2 3 4 4

To construct the LCS, start in the bottom right-hand corner, gand follow the arrows. A indicates a matching character.

j 0 1 2 3 4 5 6j 0 1 2 3 4 5 6j 0 1 2 3 4 5 6j 0 1 2 3 4 5 6j 0 1 2 3 4 5 6

i y j B D C A B A

x

j 0 1 2 3 4 5 6

i y j B D C A B A

x

j 0 1 2 3 4 5 6

i y j B D C A B A

x

j 0 1 2 3 4 5 6

i y j B D C A B A

x0 x i 0 0 0 0 0 0 0

1 A 0 0 0 0 1 1 10 x i 0 0 0 0 0 0 0

1 A 0 0 0 0 1 1 10 x i 0 0 0 0 0 0 0

1 A 0 0 0 0 1 1 10 x i 0 0 0 0 0 0 0

1 A 0 0 0 0 1 1 1

0 0 0 0 0 0^ ^ ^ <

^2 B 0 1 1 1 1 2 2

3 C 0 1 1 2 2 2 22 B 0 1 1 1 1 2 2

3 C 0 1 1 2 2 2 22 B 0 1 1 1 1 2 2

3 C 0 1 1 2 2 2 22 B 0 1 1 1 1 2 2

3 C 0 1 1 2 2 2 2

< < ^ <^ ^ < ^ ^

4 B 0 1 1 2 2 3 3

5 D 0 1 2 2 2 3 34 B 0 1 1 2 2 3 3

5 D 0 1 2 2 2 3 34 B 0 1 1 2 2 3 3

5 D 0 1 2 2 2 3 34 B 0 1 1 2 2 3 3

5 D 0 1 2 2 2 3 3

^ ^ ^ <^ ^ ^ ^ ^5 D 0 1 2 2 2 3 3

6 A 0 1 2 2 3 3 4B

5 D 0 1 2 2 2 3 3

6 A 0 1 2 2 3 3 4B

5 D 0 1 2 2 2 3 3

6 A 0 1 2 2 3 3 4B

5 D 0 1 2 2 2 3 3

6 A 0 1 2 2 3 3 4B

^ ^ ^ ^

^ ^ ^ ^7 B 0 1 2 2 3 4 4

LCS

7 B 0 1 2 2 3 4 47 B 0 1 2 2 3 4 47 B 0 1 2 2 3 4 4

CLCS: ABCB

Page 24: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Constructing an LCSConstructing an LCSPrint-LCS(b,X,i,j)Print LCS(b,X,i,j)if i = 0 or j = 0 then

returnreturnif b[i,j] = “ ” then

Print-LCS(b, X, i-1, j-1)print xprint xi

else if b[i,j] = “^” then Print-LCS(b, X, i-1, j)

else Print-LCS(b, X, i, j-1)( , , , j )

Knapsack problemKnapsack problem

There are two versions of the problem:There are two versions of the problem:(1) “0-1 knapsack problem” and(2) “Fractional knapsack problem”

(1) Items are indivisible; you either take an item or not. Solved with dynamic programmingnot. Solved with dynamic programming

(2) Items are divisible: you can take any fraction of an item Solved with a greedy algorithman item. Solved with a greedy algorithm.

94

0-1 Knapsack problem0 1 Knapsack problem

Thief has a knapsack with maximum capacity W andThief has a knapsack with maximum capacity W, and a set S consisting of n itemsEach item i has some weight w and benefit value vEach item i has some weight wi and benefit value vi(all wi , vi and W are integer values)Problem: How to pack the knapsack to achieveProblem: How to pack the knapsack to achieve maximum total value of packed items?Goal:Goal:

find xi such that for all xi = 0, 1, i = 1, 2, .., n

∑ wixi ≤ W and

∑ x v is maximum

95

∑ xivi is maximum

0-1 Knapsack - Greedy Strategy0-1 Knapsack - Greedy StrategyE.g.1:

5050Item 2

Item 3

20 $10050

$120

+

30

1020

30Item 1

10

20

$60

$100

+ 20 $100

$60 $100 $120 $160 $220

$6/pound $5/pound $4/pound

W

$6/pound $5/pound $4/pound

E.g.2:Item: 1 2 3 4 5 6 7Benefit: 5 8 3 2 7 9 4Weight: 7 8 4 10 4 6 4Knapsack holds a maximum of 22 pounds p pFill it to get the maximum benefit

Page 25: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

0-1 Knapsack problem: brute-force p papproach

Let’s first solve this problem with a straightforward algorithmalgorithmSince there are n items, there are 2n possible

bi ti f itcombinations of items.We go through all combinations and find the one with the most total value and with total weight less or equal to WqRunning time will be O(2n)

97

0-1 Knapsack - Dynamic Programming0 1 Knapsack Dynamic Programming

P(i w) – the maximum profit that can beP(i, w) – the maximum profit that can be

obtained from items 1 to i, if the

knapsack has size w

Case 1: thief takes item i

P(i ) P(i 1 )P(i, w) =

Case 2: thief does not take item i

vi + P(i - 1, w-wi)

Case 2: thief does not take item i

P(i w) = P(i - 1 w)P(i, w) P(i 1, w)

Recursive Formula

⎨⎧ >−

= if ],1[

][wwwiP

wiP i

⎩⎨ −−−+

=else ],1[],,1[max

],[wiPwwiPv

wiPki

The best subset that has the total weight w, either contains item i or not.First case: wi>w. Item i can’t be part of the solution, since if it was, the total weight would besolution, since if it was, the total weight would be > w, which is unacceptableS d < Th th it i b iSecond case: wi <=w. Then the item i can be in the solution, and we choose the case with greater

l99

value.

0-1 Knapsack - Dynamic Programming0 1 Knapsack Dynamic Programming

Item i was taken Item i was not taken

P(i, w) = max vi + P(i - 1, w-wi), P(i - 1, w)

0 0 0 0 0 0 0 0 0 0 00: 1 w - wi W

0

w

00

0

first

second000

i-1

i

second

000

i

0n

Page 26: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Item Weight Value1 2 12

W = 5

Example:P(i, w) = max vi + P(i - 1, w-wi), P(i - 1, w) 2 1 10

3 3 200 1 2 3 4 5

0 0 0 0 0 0

0

4 2 150 1 2 3 4 5

1

0

12 12 12 12

P(1, 1) =

P(1, 2) = max12+0, 0 = 120

P(0, 1) = 0

0

0

2

3

10 12 22 22 22

10 12 22 30 32

P(1, 2)

P(1, 3) =

P(1, 4) =

max12 0, 0 12

max12+0, 0 = 12

max12+0, 0 = 1204 10 15 25 30 37

P(1, 4)

P(1, 5) =

max12 0, 0 12

max12+0, 0 = 12

P(2, 1)=

P(2, 2)=

P(3, 1)=

P(3, 2)=

P(4, 1)=

P(4, 2)=

max10+0, 0 = 10

max10+0, 12 = 12

P(2,1) = 10

P(2,2) = 12

P(3,1) = 10

max15+0, 12 = 15

P(2, 3)=

P(2, 4)=

P(3, 3)=

P(3, 4)=

P(4, 3)=

P(4, 4)=

max10+12, 12 = 22

max10+12, 12 = 22

max20+0, 22=22

max20+10,22=30

max15+10, 22=25

max15+12, 30=30

P(2, 5)= P(4, 5)= P(4, 5)= max10+12, 12 = 22 max20+12,22=32 max15+22, 32=37

Reconstructing the Optimal Solutiong p S0 1 2 3 4 5

0 0 0 0 0 0

01

0

12 12 12 120

• Item 4

• Item 20

0

2

3

10 12 22 22 22

10 12 22 30 32

Item 2

• Item 1

04 10 15 25 30 37

St t t P( W)• Start at P(n, W)• When you go left-up ⇒ item i has been taken• When you go straight up ⇒ item i has not been

taken

Optimal SubstructureOptimal Substructure

Consider the most valuable load that weights

at most W poundsat most W pounds

If we remove item j from this loadIf we remove item j from this load

⇒ The remaining load must be the most g

valuable load weighing at most W – wj that

can be taken from the remaining n – 1 items

0-1 Knapsack Algorithmp gfor w = 0 to W

P[0 ] 0P[0,w] = 0for i = 0 to n

O(n*W)

P[i,0] = 0for w = 0 to W

if wi <= w // item i can be part of the solutionif vi + P[i-1,w-wi] > P[i-1,w]i [ , i] [ , ]

P[i,w] = vi + P[i-1,w- wi]elseelse

P[i,w] = P[i-1,w]else P[i w] = P[i 1 w] // w > w

104

else P[i,w] = P[i-1,w] // wi > w

Page 27: Dynamic ProgrammingDynamic Programming · PDF file... Example. Dynamic ... Assembly-line schedulingline scheduling Cars factory with two assembly lines. ... Assembly-line scheduling

Overlapping SubproblemsOverlapping SubproblemsP(i w) = max vi + P(i - 1 w-wi) P(i - 1 w)

0 0 0 0 0 0 0 0 0 0 00: 1 W

0

P(i, w) max vi + P(i 1, w wi), P(i 1, w) w

00

0

000

i-1

i 000

i

0n

E.g.: all the subproblems shown in grey may depend on P(i-1, w)

ExampleExample

Let’s run our algorithm on theLet s run our algorithm on the following data:

n = 4 (# of elements)W = 5 (max weight)W = 5 (max weight)Elements (weight, benefit):(2 3) (3 4) (4 5) (5 6)(2,3), (3,4), (4,5), (5,6)

106

ConclusionConclusion

D i i i f l t h i fDynamic programming is a useful technique of solving certain kind of problems

When the solution can be recursively described inWhen the solution can be recursively described in terms of partial solutions, we can store these partial solutions and re use them as necessarysolutions and re-use them as necessary

107