Top Banner
Dynamic Programming • Reading Material: Chapter 7.
36

Dynamic Programming Reading Material: Chapter 7..

Dec 19, 2015

Download

Documents

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: Dynamic Programming Reading Material: Chapter 7..

Dynamic Programming

• Reading Material: Chapter 7.

Page 2: Dynamic Programming Reading Material: Chapter 7..

Dynamic Programming• Dynamic Programming algorithms address

problems whose solution is recursive in nature, but has the following property: The direct implementation of the recursive solution results in identical recursive calls that are executed more than once.

• Dynamic programming implements such algorithms by evaluating the recurrence in a bottom-up manner, saving intermediate results that are later used in computing the desired solution

Page 3: Dynamic Programming Reading Material: Chapter 7..

Fibonacci Numbers

• What is the recursive algorithm that computes Fibonacci numbers? What is its time complexity?– Note that it can be shown that

2

1

0

21

1

0

nfff

f

f

nnn

2

51,2

nnf

Page 4: Dynamic Programming Reading Material: Chapter 7..

Computing the Binomial Coefficient

• Recursive Definition

• Actual Value

nk

k

n

k

n

nkk

k

n

01

1

1

or01

!!

!

knk

n

k

n

Page 5: Dynamic Programming Reading Material: Chapter 7..

Computing the Binomial Coefficient

• What is the direct recursive algorithm for computing the binomial coefficient? How much does it cost?– Note that

nnn

n

n

n n

2

!2/!2/

!

2/

Page 6: Dynamic Programming Reading Material: Chapter 7..

Optimization Problems and Dynamic Programming

• Optimization problems with certain properties make another class of problems that can be solved more efficiently using dynamic programming.

• Development of a dynamic programming solution to an optimization problem involves four steps

– Characterize the structure of an optimal solution • Optimal substructures, where an optimal solution consists of sub-

solutions that are optimal.• Overlapping sub-problems where the space of sub-problems is small in

the sense that the algorithm solves the same sub-problems over and over rather than generating new sub-problems.

– Recursively define the value of an optimal solution.– Compute the value of an optimal solution in a bottom-up

manner.– Construct an optimal solution from the computed optimal

value.

Page 7: Dynamic Programming Reading Material: Chapter 7..

Longest Common Subsequence Problem

• Problem Definition: Given two strings A and B over alphabet , determine the length of the longest subsequence that is common in A and B.

• A subsequence of A=a1a2…an is a string of the form ai1ai2…aik where 1i1<i2<…<ik n

• Example: Let = { x , y , z }, A = xyxyxxzy, B=yxyyzxy, and C= zzyyxyz

– LCS(A,B)=yxyzy Hence the length =– LCS(B,C)= Hence the length =– LCS(A,C)= Hence the length =

Page 8: Dynamic Programming Reading Material: Chapter 7..

Straight-Forward Solution

• Brute-force search– How many subsequences exist in a string of

length n?– How much time needed to check a string

whether it is a subsequence of another string of length m?

– What is the time complexity of the brute-force search algorithm of finding the length of the longest common subsequence of two strings of sizes n and m?

Page 9: Dynamic Programming Reading Material: Chapter 7..

Dynamic Programming Solution

• Let L[i,j] denote the length of the longest common subsequence of a1a2…ai and b1b2…bj, which are substrings of A and B of lengths n and m, respectively. ThenL[i,j] = when i = 0 or j = 0

L[i,j] = when i > 0, j > 0, ai=bj

L[i,j] = when i > 0, j > 0, aibj

Page 10: Dynamic Programming Reading Material: Chapter 7..

LCS AlgorithmAlgorithm LCS(A,B)

Input: A and B strings of length n and m respectively

Output: Length of longest common subsequence of A and B

Initialize L[i,0] and L[0,j] to zero;

for i ← 1 to n do

for j ← 1 to m do

if ai = bj then

L[i,j] ← 1 + L[i-1,j-1]

else

L[i,j] ← max(L[i-1,j],L[i,j-1])

end if

end for;

end for;

return L[n,m];

Page 11: Dynamic Programming Reading Material: Chapter 7..

Example (Q7.5 pp. 220)

• Find the length of the longest common subsequence of A=xzyzzyx and B=zxyyzxz

Page 12: Dynamic Programming Reading Material: Chapter 7..

Example (Cont.)x z y z z y x

0 0 0 0 0 0 0 0

z 0

x 0

y 0

y 0

z 0

x 0

z 0

Page 13: Dynamic Programming Reading Material: Chapter 7..

Complexity Analysis of LCS Algorithm

• What is the time and space complexity of the algorithm?

Page 14: Dynamic Programming Reading Material: Chapter 7..

Matrix Chain Multiplication

• Assume Matrices A, B, and C have dimensions 210, 102, and 210 respectively. The number of scalar multiplications using the standard Matrix multiplication algorithm for– (A B) C is– A (B C) is

• Problem Statement: Find the order of multiplying n matrices in which the number of scalar multiplications is minimum.

Page 15: Dynamic Programming Reading Material: Chapter 7..

Straight-Forward Solution• Again, let us consider the brute-force method. We

need to compute the number of different ways that we can parenthesize the product of n matrices.– e.g. how many different orderings do we have for the

product of four matrices?– Let f(n) denote the number of ways to parenthesize the

product M1, M2, …, Mn.

• (M1M2…Mk) (M k+1M k+2…Mn)

• What is f(2), f(3) and f(1)?

Page 16: Dynamic Programming Reading Material: Chapter 7..

Catalan Numbers

• Cn=f(n+1)

• Using Stirling’s Formula, it can be shown that f(n) is approximately

1

221)(

n

n

nnf

5.14

4

n

n

Page 17: Dynamic Programming Reading Material: Chapter 7..

Cost of Brute Force Method

• How many possibilities do we have for parenthesizing n matrices?

• How much does it cost to find the number of scalar multiplications for one parenthesized expression?

• Therefore, the total cost is

Page 18: Dynamic Programming Reading Material: Chapter 7..

The Recursive Solution– Since the number of columns of each matrix Mi is equal

to the number of rows of Mi+1, we only need to specify the number of rows of all the matrices, plus the number of columns of the last matrix, r1, r2, …, rn+1 respectively.

– Let the cost of multiplying the chain Mi…Mj (denoted by Mi,j) be C[i,j]

– If k is an index between i+1 and j, what is the cost of multiplying Mi,j considering multiplying Mi,k-1 with Mk,j?

– Therefore, C[1,n]=

Page 19: Dynamic Programming Reading Material: Chapter 7..

The Dynamic Programming Algorithm

C[1,1] C[1,2] C[1,3] C[1,4] C[1,5] C[1,6]

C[2,2] C[2,3] C[2,4] C[2,5] C[2,6]

C[3,3] C[3,4] C[3,5] C[3,6]

C[4,4] C[4,5] C[4,6]

C[5,5] C[5,6]

C[6,6]

Page 20: Dynamic Programming Reading Material: Chapter 7..

Example (Q7.11 pp. 221-222)

• Given as input 2 , 3 , 6 , 4 , 2 , 7 compute the minimum number of scalar multiplications:

Page 21: Dynamic Programming Reading Material: Chapter 7..

MatChain AlgorithmAlgorithm MatChain

Input: r[1..n+1] of +ve integers corresponding to the dimensions of a chain of matrices

Output: Least number of scalar multiplications required to multiply the n matrices

for i := 1 to n do

C[i,i] := 0; // diagonal d0

for d := 1 to n-1 do // for diagonals d1 to dn-1

for i := 1 to n-d do

j := i+d;

C[i,j] := ; for k := i+1 to j do

C[i,j] := min{C[i,j],C[i,k-1]+C[k,j]+r[i]r[k]r[j+1];

end for;

end for;

return C[1,n];

Page 22: Dynamic Programming Reading Material: Chapter 7..

Time and Space Complexity of MatChain Algorithm

• Time Complexity

• Space Complexity

)(

6

121

2

1

)(1

1

3

1

1

2

1

11

1

11

1

1

11

1

111

1

1

n

nnnc

nncnddnc

dndcdcdc

cc

n

d

n

d

dn

i

n

d

dn

i

n

d

di

ik

dn

i

n

d

j

ik

dn

i

n

d

Page 23: Dynamic Programming Reading Material: Chapter 7..

The Knapsack Problem

• Let U = {u1, u2, …, un} be a set of n items to be packed in a knapsack of size C.

• Let sj and vj be the size and value of the jth item, where sj, vj , 1 j n.

• The objective is to fill the knapsack with some items from U whose total size does not exceed C and whose total value is maximum.– Assume that the size of each item does not exceed

C.

Page 24: Dynamic Programming Reading Material: Chapter 7..

The Knapsack Problem Formulation

• Given n +ve integers in U, we want to find a subset SU s.t.

is maximized subject to the constraint

Su

i

i

v

CsSu

i

i

Page 25: Dynamic Programming Reading Material: Chapter 7..

Inductive Solution• Let V[i,j] denote the value obtained by filling a

knapsack of size j with items taken from the first i items {u1, u2, …, ui} in an optimal way:

– The range of i is – The range of j is– The objective is to find V[ , ]

• V[i,0] = V[0,j] =

• V[i,j] = V[i-1,j] if

= max {V[i-1,j], V[ , ]+vi} if

Page 26: Dynamic Programming Reading Material: Chapter 7..

Example (pp. 223 Question 7.22)

• There are five items of sizes 3, 5, 7, 8, and 9 with values 4, 6, 7, 9, and 10 respectively. The size of the knapsack is 22.

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

0 0 0

0 0 0

0 0 0

0 0 0

Page 27: Dynamic Programming Reading Material: Chapter 7..

Algorithm KnapsackAlgorithm Knapsack

Input: A set of items U = {u1,u2,…,un} with sizes s1,s2,…,sn and values v1,v2,…,vn, respectively and knapsack capacity C.

Output: the maximum value of subject to

for i := 0 to n do

V[i,0] := 0;

for j := 0 to C do

V[0,j] := 0;

for i := 1 to n do

for j := 1 to C do

V[i,j] := V[i-1,j];

if si j then

V[i,j] := max{V[i,j], V[i-1,j-si]+vi}

end for;

end for;

return V[n,C];

Su

i

i

v CsSu

i

i

Page 28: Dynamic Programming Reading Material: Chapter 7..

Time and Space Complexity of the Knapsack Algorithm

Page 29: Dynamic Programming Reading Material: Chapter 7..

All-Pairs Shortest Paths

• Problem: For every vertex u, v V, calculate (u, v).

• Possible Solution 1:

• Cost of Possible Solution 1:

Page 30: Dynamic Programming Reading Material: Chapter 7..

Dynamic Programming Solution

• Define a k-path from u to v, where

u,v {1 , 2 , … , n}

to be any path whose intermediate vertices all have indices less than or equal to k.

– What is a 0-path?

– What is a 1-path?

– …

– What is an n-path?

nkddd

kjid k

jkkki

kji

kji 1 if,min

0 if],[length1

,1

,1

,,

Page 31: Dynamic Programming Reading Material: Chapter 7..

Floyd’s Algorithm

Algorithm FloydInput: An n n matrix length[1..n, 1..n] such that

length[i,j] is the weight of the edge (i,j) in a directed graph G = ({1,2,…,n}, E)

Output: A matrix D with D[i,j] = [i,j]

1 D = length; //copy the input matrix length into D2 for k = 1 to n do3 for i = 1 to n do4 for j = 1 to n do5 D[i,j] = min{D[i,j] , D[i,k] + D[k,j]}

Page 32: Dynamic Programming Reading Material: Chapter 7..

Example

1 3

4

2

48

111

5

12 15

511

2

Page 33: Dynamic Programming Reading Material: Chapter 7..

0-p 1 2 3 4

1

2

3

4

1-p 1 2 3 4

1

2

3

4

2-p 1 2 3 4

1

2

3

4

3-p 1 2 3 4

1

2

3

4

Example (Cont.)

Page 34: Dynamic Programming Reading Material: Chapter 7..

Time and Space Complexity

• Time Complexity:

• Space Complexity:

Page 35: Dynamic Programming Reading Material: Chapter 7..

0-p 1 2 3 4

1 0 12 5 2 15 0 8 11

3 4 0 2

4 1 5 11 0

1-p 1 2 3 4

1 0 12 5 2 15 0 8 11

3 4 0 2

4 1 5 6 0

2-p 1 2 3 4

1 0 12 5 23

2 15 0 8 11

3 19 4 0 2

4 1 5 6 0

3-p 1 2 3 4

1 0 9 5 7

2 15 0 8 10

3 19 4 0 2

4 1 5 6 0

Example (Cont.)

Page 36: Dynamic Programming Reading Material: Chapter 7..

4-p 1 2 3 4

1 0 9 5 7

2 11 0 8 10

3 3 4 0 2

4 1 5 6 0

3-p 1 2 3 4

1 0 9 5 7

2 15 0 8 10

3 19 4 0 2

4 1 5 6 0

Example (Cont.)