0% found this document useful (0 votes)
52 views

Matrix Chain Multiplication

The document describes the matrix chain multiplication problem and provides an algorithm for solving it using dynamic programming. The problem is to determine the most efficient way to multiply a sequence of matrices by minimizing the number of single-element multiplications. The algorithm works recursively by building up solutions to subproblems, starting with adjacent matrix pairs and then progressively longer chains, storing results in a 2D table to avoid recomputing subproblems.

Uploaded by

Abdallahi Sidi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views

Matrix Chain Multiplication

The document describes the matrix chain multiplication problem and provides an algorithm for solving it using dynamic programming. The problem is to determine the most efficient way to multiply a sequence of matrices by minimizing the number of single-element multiplications. The algorithm works recursively by building up solutions to subproblems, starting with adjacent matrix pairs and then progressively longer chains, storing results in a 2D table to avoid recomputing subproblems.

Uploaded by

Abdallahi Sidi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 13

More Dynamic Programming

Matrix Chain Multiplication


Matrix Chain Multiplication
 Given some matrices to multiply, determine the best order
to multiply them so you minimize the number of single
element multiplications.
◦ i.e. Determine the way the matrices are parenthesized.

 Firstoff, it should be noted that matrix multiplication is


associative, but not commutative. But since it is associative,
we always have:

 ((AB)(CD)) = (A(B(CD))), or any other grouping as long as


the matrices are in the same consecutive order.

 BUT NOT: ((AB)(CD)) = ((BA)(DC))


Matrix Chain Multiplication
Itmay appear that the amount of work done won’t
change if you change the parenthesization of the
expression, but we can prove that is not the case!

Let us use the following example:


◦ Let A be a 2x10 matrix
◦ Let B be a 10x50 matrix
◦ Let C be a 50x20 matrix

ButFIRST, let’s review some matrix


multiplication rules…
Matrix Chain Multiplication
A S Let’s
 get back to our example: We will show that the way we
Igroup
◦G
matrices when multiplying A, B, C matters:
NIFa 10x50 matrix
Let A be a 2x10 matrix
◦ Let B be
ICA
◦ Let C be a 50x20 matrix
NT
Consider computing A(BC): D
i

f f
◦ # multiplications for (BC) = 10x50x20
er e
= 10000, creating a 10x20

◦ # multiplications for A(BC) = 2x10x20 = 400 n


answer matrix
ce !
◦ Total multiplications = 10000 + 400 = 10400.
!!
 Consider computing (AB)C:
◦ # multiplications for (AB) = 2x10x50 = 1000, creating a 2x50 answer
matrix
◦ # multiplications for (AB)C = 2x50x20 = 2000,
◦ Total multiplications = 1000 + 2000 = 3000
Matrix Chain Multiplication
Thus, our goal today is:
Given a chain of matrices to multiply,
determine the fewest number of
multiplications necessary to compute the
product.
Matrix Chain Multiplication
 Formal Definition of the problem:
◦ Let A = A0 A1 ... An-1
◦ Let Ni,j denote the minimal number of multiplications
necessary to find the product:
 Ai Ai+1 ... Aj.
◦ And let dixdi+1 denote the dimensions of matrix Ai.

 We must attempt to determine the minimal number


of multiplications necessary(N0,n-1) to find A,
◦ assuming that we simply do each single matrix
multiplication in the standard method.
Matrix Chain Multiplication
The key to solving this problem is noticing
the sub-problem optimality condition:
◦ If a particular parenthesization of the whole
product is optimal, then any sub-parenthesization
in that product is optimal as well.

Say What?
◦ If (A (B ((CD) (EF)) ) ) is optimal
◦ Then (B ((CD) (EF)) ) is optimal as well
◦ Proof on the next slide…
Matrix Chain Multiplication
Assume that we are calculating ABCDEF and that
the following parenthesization is optimal:
 (A (B ((CD) (EF)) ) )
◦ Then it is necessarily the case that
 (B ((CD) (EF)) )
◦ is the optimal parenthesization of BCDEF.

Why is this?
◦ Because if it wasn't, and say ( ((BC) (DE)) F) was
better, then it would also follow that
 (A ( ((BC) (DE)) F) ) was better than
 (A (B ((CD) (EF)) ) ),
◦ contradicting its optimality!
Matrix Chain Multiplication
 Our final multiplication will ALWAYS be of the form
◦ (A0 A1 ... Ak)  (Ak+1 Ak+2 ... An-1)

 In essence, there is exactly one value of k for which we should


"split" our work into two separate cases so that we get an optimal
result.
Another◦ Here
KEY is a listObservation…
of the cases to choose from: 
◦ (A0)  (A1 Ak+2 ... An-1)
◦ (A0 A1)  (A2 Ak+2 ... An-1)
◦ (A0 A1A2)  (A3 Ak+2 ... An-1)
◦ ...
◦ (A0 A1 ... An-3)  (An-2  An-1)
◦ (A0 A1 ... An-2)  (An-1)

 Basically,count the number of multiplications in each of these


choices and pick the minimum.
◦ One other point to notice is that you have to account for the minimum
number of multiplications in each of the two products.
Matrix Chain Multiplication
 Consider the case multiplying these 4 matrices:
◦ A: 2x4
◦ B: 4x2
◦ C: 2x3
◦ D: 3x1

 1. (A)(BCD) - This is a 2x4 multiplied by a 4x1,


◦ so 2x4x1 = 8 multiplications, plus whatever work it will take to
multiply (BCD).

 2. (AB)(CD) - This is a 2x2 multiplied by a 2x1,


◦ so 2x2x1 = 4 multiplications, plus whatever work it will take to
multiply (AB) and (CD).

 3. (ABC)(D) - This is a 2x3 multiplied by a 3x1,


◦ so 2x3x1 = 6 multiplications, plus whatever work it will take to
multiply (ABC).
This leads us toChain
Matrix the following recursive formula:
Multiplication
Our recursive formula:
◦ Ni,j = min value of Ni,k + Nk+1,j + didk+1dj+1, over all valid
values of k.

Now let’s turn this recursive formula into a dynamic


programming solution
◦ Which sub-problems are necessary to solve first?

◦ Clearly it's necessary to solve the smaller problems


before the larger ones.
 In particular, we need to know Ni,i+1, the number of
multiplications to multiply any adjacent pair of matrices before
we move onto larger tasks.
 Similarly, the next task we want to solve is finding all the values
of the form Ni,i+2, then Ni,i+3, etc.
Matrix Chain Multiplication
Algorithm:

1) Initialize N[i][i] = 0, and all other entries in N to .


2) for i=1 to n-1 do the following
2i) for j=0 to n-1-i do
2ii) for k=j to j+i-1
2iii) if (N[j][j+i-1] > N[j][k]+N[k+1][j+i-1]+d jdk+1di+j)
  N[j][j+i-1]= N[j][k]+N[k+1][j+i-1]+d jdk+1di+j

Basically, we’re checking different places to “split” our


matrices by checking different values of k and seeing if they
improve our current minimum value.
References
Slides adapted from Arup Guha’s Computer
Science II Lecture notes:
http://www.cs.ucf.edu/~dmarino/ucf/cop3503/le
ctures/
Additional material from the textbook:
Data Structures and Algorithm Analysis in Java
(Second Edition) by Mark Allen Weiss
Additional images:
www.wikipedia.com
xkcd.com

You might also like