0% found this document useful (0 votes)
51 views28 pages

Lecture 12: Chain Matrix Multiplication: CLRS Section 15.2

The document discusses chain matrix multiplication, which involves multiplying several matrices together in sequence. It begins by recalling the definition of matrix multiplication, where the product of an m x n matrix and an n x p matrix results in an m x p matrix. It also notes that matrix multiplication is associative. The document then introduces the chain matrix multiplication problem and states that a dynamic programming algorithm will be presented to solve this problem efficiently.

Uploaded by

Oshi Garg
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views28 pages

Lecture 12: Chain Matrix Multiplication: CLRS Section 15.2

The document discusses chain matrix multiplication, which involves multiplying several matrices together in sequence. It begins by recalling the definition of matrix multiplication, where the product of an m x n matrix and an n x p matrix results in an m x p matrix. It also notes that matrix multiplication is associative. The document then introduces the chain matrix multiplication problem and states that a dynamic programming algorithm will be presented to solve this problem efficiently.

Uploaded by

Oshi Garg
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

Lecture 12: Chain Matrix Multiplication

CLRS Section 15.2

Outline of this Lecture

Recalling matrix multiplication.

The chain matrix multiplication problem.

A dynamic programming algorithm for chain ma-


trix multiplication.

1
Recalling Matrix Multiplication

  
 
Matrix: An   matrix is a two-
dimensional array
        "    ')(
  !  (
 #  #   $# " $#  (
   ! 


.. .. .. .. *
 %"  &   "  
 ! 

which has rows and  columns.

Example: The following is a +  , matrix:


 - . / 0 1 ' (
 (
 0 1 .2/ 1  (
,
1 / 43
 , , * 5
. 1 3 . 
! !

2
Recalling Matrix Multiplication

   
The product of a    matrix and a   

matrix is a    matrix given by

 
    
  

 

  
  
for  and  .

Example: If
  . / ' (   . ' (

  0 1    0 1
 ! *  *
1
, , , ,

then
 43  43  ')(

    . 0
 + + *
0 3 43 3 5

3
Remarks on Matrix Multiplication

   
If is defined, may not be defined.

    
Quite possible that .

Multiplication is recursively defined by




      
 
 

       
  
  


5

Matrix multiplication is associative , e.g.,




    
 

      

     

so parenthenization does not change result.

4
 
Direct Matrix multiplication

 
Given a    matrix and a    matrix , the direct
  
way of multiplying is to compute each

 
    
  

 

  
  
for  and  .

Complexity of Direct Matrix multiplication:

Note that has   entries and each entry takes   


 
time to compute so the total procedure takes   
time.

5
 
Direct Matrix multiplication of

 
Given a    matrix , a    matrix and a  
 
matrix , then can be computed in two ways
     
 and  :

The number of multiplications needed are:


      
 
       
 
 
    
 
   

5
   1  
When  , , + , and , then
 
       . 3
 

 
 
     . .

A big difference!

Implication: The multiplication “sequence”


(parenthesization) is important!!

6
The Chain Matrix Multiplication Problem

Given
dimensions  



555  
corresponding to matrix sequence
,
 
, , 
  
 555
where has dimension    ,
determine the “multiplication sequence” that minimizes
the number of scalar multiplications in computing


     . That is, determine how to parenthisize
the multiplications.


      
 

        
 

     

   -  


        


 

          
 

     
    



Exhaustive search:   +
 
.

Question: Any better approach? Yes – DP

7
Developing a Dynamic Programming Algorithm

Step 1: Determine the structure of an optimal solution


(in this case, a parenthesization).

Decompose the problem into subproblems: For


   
each pair , determine the multiplication
     
sequence for 


 
 that minimizes

the number of multiplications.

   

Clearly, is a    matrix.

Original Problem: determine sequence of multiplica-





tion for  .

8
Developing a Dynamic Programming Algorithm

Step 1: Determine the structure of an optimal solution


(in this case, a parenthesization).


 
High-Level Parenthesization for
For any optimal multiplication sequence, at the last
 
step you are multiplying two matrices  and   
 

for some . That is,
   
    
   
 
 

     
 


5

Example
   
        
         
5

Here , .

9
Developing a Dynamic Programming Algorithm

Step 1 – Continued: Thus the problem of determin-


ing the optimal sequence of multiplications is broken
down into 2 questions:

How do we decide where to split the chain



(what is )?

(Search all possible values of )

How do we parenthesize the subchains


 
 and   
  ?

(Problem has optimal substructure property that


 
 and   
  must be optimal so we can ap-
ply the same procedure recursively)

10
Developing a Dynamic Programming Algorithm

Step 1 – Continued:

Optimal Substructure Property: If final “optimal” so-


   
lution of  involves splitting into  and   
 
 
at final step then parenthesization of  and   
 
in final optimal solution must also be optimal for the
subproblems “standing alone”:

  
If parenthisization of was not optimal we could
replace it by a better parenthesization and get a cheaper
final solution, leading to a contradiction.

 
Similarly, if parenthisization of 
 was not op-


timal we could replace it by a better parenthesization


and get a cheaper final solution, also leading to a con-
tradiction.

11
Developing a Dynamic Programming Algorithm

Step 2: Recursively define the value of an optimal


solution.

As with the 0-1 knapsack problem, we will store the


solutions to the subproblems in an array.

    
 "
For , let  denote the minimum
 

number of multiplications needed to compute .
The optimum cost can be described by the following
recursive definition.

12
Developing a Dynamic Programming Algorithm

Step 2: Recursively define the value of an optimal


solution.
       


 
 
 
   



   
  
 

  
Proof: Any optimal sequence of multiplication for
is equivalent to some choice of splitting
       
 




for some , where the sequences of multiplications for
 
 and   
  also are optimal. Hence
    
    
 
        
5

13
Developing a Dynamic Programming Algorithm


Step 2 – Continued: We know that, for some
    
    
 
        
5

We don’t know what is, though

But, there are only ! possible values of so we
can check them all and find the one which returns a
smallest cost.

Therefore
   

   
 
   
  

  


 





 

14
Developing a Dynamic Programming Algorithm

Step 3: Compute the value of an optimal solution in a


bottom-up fashion.
  


 
Our Table: . 
 
only defined for .

The important point is that when we use the equation



    
 
  

  


 




 
 


  
  
 
 
to calculate we must have already evaluated and

For both cases, the
 

 corresponding length of the


matrix-chain are both less than . Hence, the algorithm
should fill the table in increasing order of the length of the matrix-
chain.

That is, we calculate in the order

 
   
      !    !  "#  $%&

'    ( 
) * *+,  - &
   
) /.0 * 1
..
.
 *2#   &
 &
15
Dynamic Programming Design Warning!!

When designing a dynamic programming algorithm


there are two parts:

1. Finding an appropriate optimal substructure prop-


erty and corresponding recurrence relation on ta-
ble items. Example:
     
           
  

    



2. Filling in the table properly.


This requires finding an ordering of the table el-
ements so that when a table item is calculated
using the recurrence relation, all the table values
needed by the recurrence relation have already
been calculated.

"
In our example this means that by the time 
  
is calculated all of the values  and  
  
were already calculated.

16
Example for the Bottom-Up Computation

 
Example: Given a chain of four matrices
,
  
,
 
and , with 

, , 

 + ,   1 ,   
and
  0   
 . Find  + .

S0: Initialization


4



1 m[i,j]


3 




2
j i


2 3


4


1


0 0 0 0


5 4 6 2 7


   

    

A1 A2 A3 A4

p0 p1 p2 p3 p4

17
Example – Continued

 
Stp 1: Computing  By definition
    

  



   
  &
     
 



   " $     3
    
5

4



1 m[i,j]


3 




2
j i


2 3


120


4


1


0 0 0 0


5 4 6 2 7


   

    

A1 A2 A3 A4

p0 p1 p2 p3 p4

18
Example – Continued

#  
Stp 2: Computing  By definition

#    $    

  
             
    

 
 $    .
    +
5

4



1 m[i,j]


3 




2
j i


2 3


120 48


4


1


0 0 0 0


5 4 6 2 7


   

    

A1 A2 A3 A4

p0 p1 p2 p3 p4

19
Example – Continued

 # 
Stp3: Computing  By definition
+

     
    
 #     
 +        +  
   
       .
   + +     +
5

4



1 m[i,j]


3 




2
j i


2 3


120 48 84


4


1


0 0 0 0


5 4 6 2 7


   

    

A1 A2 A3 A4

p0 p1 p2 p3 p4

20
Example – Continued

  
Stp4: Computing  By definition
       

  



   

     
 
  " 
$# 


  
  &
 
 # 
     
      
 . .

4



1 m[i,j]


3 




2
j i


88


2 3


120 48 84


4


1


0 0 0 0


5 4 6 2 7


   

    

A1 A2 A3 A4

p0 p1 p2 p3 p4

21
Example – Continued

# 
Stp5: Computing  + By definition
   
  
  
#    $  
 +        + 

$# & 
 # 

 
  

  +      

 
$#   
   + + 
 43
+
5

4



1 m[i,j]


3 




2
j i


88 104


2 3


120 48 84


4


1


0 0 0 0


5 4 6 2 7


   

    

A1 A2 A3 A4

p0 p1 p2 p3 p4

22
Example – Continued
 
St6: Computing  + By definition
    

    
      
 +       +  

 

   #  

 
 
 
 
 #
+

  


  
 

+

     


   + +     

  .
,
5


4



1 m[i,j]


3



158 

2


j i


88 104


2 3


120 48 84


4


1


0 0 0 0


5 4 6 2 7


   

    

A1 A2 A3 A4

p0 p1 p2 p3 p4

We are done!
23
Developing a Dynamic Programming Algorithm

Step 4: Construct an optimal solution from computed


information – extract the actual sequence.

 %  
"
Idea: Maintain an array , where de-
5 5 5 5   

notes for the optimal splitting in computing
  
  
  . The array    
can be used re-
5 5 5 5
cursively to recover the multiplication sequence.

How to Recover the Multiplication Sequence?



 
     
        


 
 
      
    
 
         
 

 
  

      
            
  
   
    

... ...

Do this recursively until the multiplication sequence is


determined.

24
Developing a Dynamic Programming Algorithm

Step 4: Construct an optimal solution from computed


information – extract the actual sequence.

Example of Finding the Multiplication Sequence:


 1   1 % 1 
Consider . Assume that the array
5 5 5 5
has been computed. The multiplication sequence is
recovered as follows.
 1  
 
           
   

     

  
 1  

       
+ ,

Hence the final multiplication sequence is


 

     
 
       
5

25
The Dynamic Programming Algorithm
 
 
 )
Matrix-Chain(    
for (   to  ) 
;
for (  to  )
 
 

for ( to   )
 
  

  
   
;
   ; 

for ( to )
   
  


   

 

 
 

 
 


 
 
;
if ( )

 


  
 

    ;
 ;





 return and ; (Optimum in   
)

Complexity: The loops are nested three deep.


Each loop index takes on  values.
Hence the time complexity is     
. Space complexity
  
.

26



Constructing an Optimal Solution: Compute 

"
The actual multiplication code uses the value to
determine how to split the current sequence. Assume
that the matrices are stored in an array of matrices
     
, and that is global to this recursive pro-
5 5
cedure. The procedure returns a matrix.
 
Mult( )


if ( )
   
     
 
   
;
 , where is 


   is now

       

  

 


 
;
  ; multiply matrices 
is now

 return and
  

 else return ;



     %
To compute  , call Mult( ).
27



Constructing an Optimal Solution: Compute 

Example of Constructing an Optimal Solution:



Compute
.


 1
Consider the example  1 
earlier,
1 
where . Assume
that the array has been computed. The
5 5 5 5
multiplication sequence is recovered as follows.
  
  
  
            
Mult   
   
   


Mult    

   
           
 
Mult                
 
 
         
 
Mult               
                  
                          
Mult 
Hence the product is computed as follows
 

     
 
       
5

28

You might also like