+ All Categories
Home > Documents > Algorithms TheoryAlgorithms Theory 14 – Dynamic...

Algorithms TheoryAlgorithms Theory 14 – Dynamic...

Date post: 06-Jul-2019
Category:
Upload: ngonhi
View: 229 times
Download: 0 times
Share this document with a friend
23
Algorithms Theory Algorithms Theory 14 – Dynamic Programming (2) Programming (2) Matrix-chain multiplication P.D. Dr. Alexander Souza Winter term 11/12
Transcript
Page 1: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Algorithms TheoryAlgorithms Theory

14 – Dynamic Programming (2)Programming (2)Matrix-chain multiplication

P.D. Dr. Alexander Souza

Winter term 11/12

Page 2: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Optimal substructure

Dynamic programming is typically applied tooptimization problems.

An optimal solution to the original problem containsti l l ti t ll b bloptimal solutions to smaller subproblems.

2Winter term 11/12

Page 3: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Matrix-chain multiplication

Given: sequence (chain) ⟨A1 A2 An⟩ of matricesGiven: sequence (chain) ⟨A1,A2,...,An⟩ of matrices

Goal: compute the product A1 ⋅ A2 ⋅ .... ⋅ An

Problem: Parenthesize the product in a way that minimizesthe number of scalar multiplicationsthe number of scalar multiplications.

Definition: A product of matrices is fully parenthesized if it is eitherp y pa single matrix or the product of two fully parenthesized matrix products, surrounded by parentheses.

3Winter term 11/12

Page 4: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Examples of fully parenthesized matrix products of the chain ⟨A A A ⟩products of the chain ⟨A1,A2,...,An⟩

All possible fully parenthesized matrix productsAll possible fully parenthesized matrix productsof the chain ⟨A1,A2,A3, A4⟩ are:

( A1 ( A2 ( A3 A4 ) ) )

( A ( ( A A ) A ) )( A1 ( ( A2 A3 ) A4 ) )

( ( A1 A2 )( A3 A4 ) )( ( 1 2 )( 3 4 ) )

( ( A1 ( A2 A3 ) ) A4 )

( ( ( A1 A2 ) A3 ) A4 )

4Winter term 11/12

Page 5: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Number of different parenthesizations

Different parenthesizations correspond to different trees:Different parenthesizations correspond to different trees:

5Winter term 11/12

Page 6: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Number of different parenthesizations

Let P(n) be the number of alternative parenthesizations of the product A A A Aof the product A1...Ak Ak+1...An .

( ) =11P

( ) ( ) ( )∑−

=≥−=

1

12for

n

knknPkPnP

( ) 4421

115⎟⎠⎞

⎜⎝⎛Ο+≈⎟⎟

⎞⎜⎜⎝

⎛+=+

nnnnn

nnPnn

π( ) numberCatalan th 1 −=+

⎠⎝nCnP n

Remark: Determining the optimal parenthesization by exhaustivesearch is not reasonable

6Winter term 11/12

search is not reasonable.

Page 7: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Multiplying two matrices

( ) ( ) ( )×××

==⋅==rpijrqijqpij cCBAbBaA ,,,

∑=

=q

kkjikij bac

1.

Al ith M t i M ltAlgorithm Matrix-MultInput: (p × q) matrix A, (q × r) matrix BOutput: (p × r) matrix C = A ⋅ B1 for i := 1 to p do2 for j :=1 to r do3 C[i, j] := 0[ , j]4 for k := 1 to q do5 C[i, j] := C[i, j] + A[i, k] ⋅B[k,j]

Number of multiplications and additions: p ⋅ q ⋅ r

Remark: Using this algorithm multiplying two (n × n) matrices requires n3

7Winter term 11/12

Remark: Using this algorithm, multiplying two (n × n) matrices requires nmultiplications. This can also be done using O(n2.376) multiplications.

Page 8: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Matrix-chain multiplication: Example

Computation of the product A1 A2 A3 whereComputation of the product A1 A2 A3 , where

A1 : (10 × 100) matrixA (100 5) t iA2 : (100 × 5) matrixA3 : (5 × 50) matrix

a) Parenthesization ( ( A1 A2 ) A3 ) requires

A´= (A1 A2):

A´ AA A3 :

Sum:

8Winter term 11/12

Sum:

Page 9: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Matrix-chain multiplication: Example

A1 : (10 × 100) matrixA2 : (100 × 5) matrixA2 : (100 × 5) matrixA3 : (5 × 50) matrix

a) Parenthesization (A1 (A2 A3 )) requires

A´´ (A A )A´´= (A2 A3 ):

A1 A´´ :A1 A :

Sum:

9Winter term 11/12

Page 10: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Structure of an optimal parenthesization

(Ai...j) = ((Ai...k) (Ak+1....j)) i ≤ k < j

Any optimal solution to the matrix-chain multiplication problemcontains optimal solutions to subproblems.

Determining an optimal solution recursively:

L t [i j] b th i i b f ti d d t tLet m[i,j] be the minimum number of operations needed to computethe product A i...j:

m[i,j] = 0, if i = j

m[i,j] = , otherwise[ ] [ ]{ }jki pppjkmkim 1,1,min −+++[ j]

s[i,j] = optimal splitting value k, i.e. the optimal parenthesizationof (Ai j) splits the product between Ak and Ak+1

[ ] [ ]{ }jkijkipppj 1<≤

10Winter term 11/12

of (Ai...j) splits the product between Ak and Ak+1

Page 11: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Recursive matrix-chain multiplication

Algorithm rec-mat-chain(p, i, j)g (p, , j)Input: sequence p = ⟨p0,p1,....,pn⟩,

where (pi-1 × pi) is the dimensionen of matrix AiI i t t h i ( i j) t [i j]Invariant: rec-mat-chain(p, i, j) returns m[i, j]1 if i = j then return 02 m[i, j] := ∞[ j]3 for k := i to j – 1 do4 m[i, j] := min( m[i,j], pi-1 pk pj +

rec mat chain(p i k) +rec-mat-chain(p, i, k) +rec-mat-chain(p, k+1, j) )

5 return m[i, j]

Initial call: rec-mat-chain(p,1, n)

11Winter term 11/12

Page 12: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Recursive matrix-chain multiplication:Running timeRunning time

Let T(n) be the time taken by rec-mat-chain(p,1,n).et ( ) be t e t e ta e by ec at c a (p, , )

1)1( ≥T

( ) ( )( )11)(1

1

1

=+−++≥ ∑

n

n

kknTkTnT

)(induction3)(

)(21

1

1−

=

≥⇒

+≥ ∑n

n

i

nT

iTn

)(induction 3)( ≥⇒ nT

Exponential running time!Exponential running time!

12Winter term 11/12

Page 13: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Matrix-chain multiplication dynamic programming

Algorithm dyn-mat-chainInput: sequence p= ⟨p0,p1,....,pn⟩, (pi-1 × pi) the dimension of matrix Ai

Output: m[1,n]1 n := length(p) 11 n := length(p) – 12 for i := 1 to n do m[i, i] := 03 for l := 2 to n do /* l = length of the subproblem */g p4 for i := 1 to n – l + 1 do /* i is the left index */5 j := i + l – 1 /* j is the right index */6 m[i, j] := ∞7 for k := i to j - 1 do8 m[i j] := min( m[i j] p p p + m[i k] + m[k + 1 j] )8 m[i, j] := min( m[i, j], pi-1 pk pj + m[i, k] + m[k + 1, j] )9 return m[1, n]

13Winter term 11/12

Page 14: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Example

A1 (30 × 35) A4 (5 × 10)A2 (35 × 15) A5 (10 × 20)2 ( ) 5 ( )A3 (15 × 5) A6 (20 × 25)

p = (30,35,15,5,10,20,25)

14Winter term 11/12

Page 15: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Example

mp = (30,35,15,5,10,20,25)

m

15Winter term 11/12

Page 16: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Example

[ ]5,2 =m[ ] [ ]( )[ ] [ ]5322

5,1,2min 5152

⎧ ++

+++<≤

pppmm

pppkmkm kk

[ ] [ ][ ] [ ][ ] [ ]5542

5,43,25,32,2

min 531

521

⎪⎩

⎪⎨

++++++

pppmmpppmmpppmm

[ ] [ ]

1300020153525000

5,54,2 541

⎧ ++

⎩ ++ pppmm

113752010350437571252053510002625

1300020153525000min

⎪⎩

⎪⎨

++=⋅⋅++

=⋅⋅++

7125

1137520103504375⎪⎩ =⋅⋅++

16Winter term 11/12

7125=

Page 17: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Matrix-chain multiplication and optimalsplitting values using dynamic programmingsplitting values using dynamic programming

Algorithm dyn-mat-chain(p)g y (p)Input: sequence p= ⟨p0,p1,....,pn⟩, (pi-1 × pi) the dimension of matrix AiOutput: m[1,n] and a matrix s[i,j] containing the optimal splitting values1 n := length(p) – 11 n : length(p) 12 for i := 1 to n do m[i, i] := 03 for l := 2 to n do4 for i := 1 to n l +1 do4 for i := 1 to n – l +1 do5 j := i + l – 16 m[i, j] := ∞7 for k : i to j 1 do7 for k := i to j – 1 do8 q := m[i, j]9 m[i, j] := min( m[i, j], pi-1 pk pj + m[i, k] + m[k + 1, j] )

f10 if m[i, j] < q then s[i, j] := k11 return (m[1, n], s)

17Winter term 11/12

Page 18: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Example of splitting values

18Winter term 11/12

Page 19: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Computation of an optimal parenthesization

Algorithm Opt-ParensAlgorithm Opt ParensInput: chain A of matrices, matrix s containing the optimal

splitting values, two indices i and jOutput: an optimal parenthesization of Ai...j

1 if i < j2 th X O t P (A i [i j])2 then X := Opt-Parens(A, s, i, s[i, j])3 Y := Opt-Parens(A, s, s[i, j] + 1, j)4 return (X⋅Y)4 return (X Y)5 else return Ai

Initial call: Opt–Parens(A, s, 1, n)

19Winter term 11/12

Page 20: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Matrix-chain multiplication using dynamic programming (top down approach)programming (top-down approach)

Memoization“ for increasing the efficiency of a recursive solution:„Memoization for increasing the efficiency of a recursive solution:

Only the first time a subproblem is encountered, its solution is computed and then stored in a table. Each subsequent time that the subproblem is encountered, the value stored in the table is simply looked up and returned (without repeated computation!).p ( p p )

20Winter term 11/12

Page 21: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Memoized matrix-chain multiplication ( notepad method“)(„notepad method )

Algorithm mem-mat-chain(p i j)Algorithm mem mat chain(p, i, j)Invariant: mem-mat-chain(p, i, j) returns m[i, j];

the value is correct if m[i, j] < ∞

1 if i = j then return 02 if m[i j] < ∞ then return m[i j]2 if m[i, j] < ∞ then return m[i, j]3 for k := i to j – 1 do4 m[i, j] := min( m[i, j], pi-1 pk pj + [ j] ( [ j] pi 1 pk pj

mem-mat-chain(p, i, k) + mem-mat-chain(p, k + 1, j) )

5 return m[i, j]

21Winter term 11/12

Page 22: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Memoized matrix-chain multiplication

Call:

1 n:= length(p) – 12 for i := 1 to n do2 for i : 1 to n do3 for j := 1 to n do4 m[i, j] := ∞5 mem-mat-ket(p 1 n)5 mem-mat-ket(p,1,n)

The computation of all entries m[i, j] using mem-mat-chain takesO( 3) tiO(n3) time.

O(n2) entries each entry m[i j] is computed onceeach entry m[i, j] is computed onceeach entry m[i, j] is looked up during the computation of m[i´,j´] if

i´= i and j´>j or j´= j and i´< im[i, j] is looked up during the computation of at most 2n entries

22Winter term 11/12

m[i, j] is looked up during the computation of at most 2n entries

Page 23: Algorithms TheoryAlgorithms Theory 14 – Dynamic ...ac.informatik.uni-freiburg.de/lak_teaching/ws11_12/algotheo/...chains.pdfAlgorithms TheoryAlgorithms Theory 14 – Dynamic Programming

Remarks about matrix-chain multiplication

1. There is an algorithm that determines an optimal parenthesizationin time O(n log n).

2. There is a linear time algorithm that determines a parenthesizationusing at most 1 155 M t multiplicationsusing at most 1.155 Mopt multiplications.

23Winter term 11/12


Recommended