Matrix chain multiplication

RespaPeter 35,622 views 27 slides Mar 28, 2015
Slide 1
Slide 1 of 27
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27

About This Presentation

Dynamic Programming is a technique for algorithm design.
It is a tabular method in which it uses divide-and-conquer to solve problems.


Slide Content

Respa Peter Roll No:12 MATRIX CHAIN MULTIPLICATION

What is Dynamic Programming? Matrix-Chain Multiplication Overview

Dynamic Programming is a technique for algorithm design. It is a tabular method in which it uses divide-and-conquer to solve problems. dynamic programming is applicable when the subproblems are not independent. So to solve a given problem, we need to solve different parts of the problem. What is Dynamic Programming?

Dynamic Programming Steps A dynamic programming approach consists of a sequence of 4 steps Characterize the structure of an optimal solution Recursively define the value of an optimal solution Compute the value of an optimal solution in a bottom-up fashion Construct an optimal solution from computed information

MATRIX CHAIN MULTIPLICATION

Input: a chain of matrices to be multiplied Output: a parenthesizing of the chain Objective: minimize number of steps needed for the multiplication

Suppose we have a sequence or chain A 1 , A 2 , …, A n of n matrices to be multiplied That is, we want to compute the product A 1 A 2 …A n There are many possible ways ( parenthesizations ) to compute the product

Example: consider the chain A 1 , A 2 , A 3 , A 4 of 4 matrices Let us compute the product A 1 A 2 A 3 A 4 5 different orderings = 5 different parenthesizations (A 1 (A 2 (A 3 A 4 ))) (A 1 ((A 2 A 3 )A 4 )) ((A 1 A 2 )(A 3 A 4 )) ((A 1 (A 2 A 3 ))A 4 ) (((A 1 A 2 )A 3 )A 4 ) Matrix Chain Multiplication cont..

Matrix multiplication is associative , e.g., so parenthenization does not change result . To compute the number of scalar multiplications necessary, we must know: Algorithm to multiply two matrices Matrix dimensions

Algorithm.. Matrix-Multiply(A,B) 1. If columns [A]!= rows [B] 2. then error “ incomplete dimensions ” 3. else for i 1 to rows[A] 4. do for j 1 to columns[B] do C[ i,j ] 0 for k 1 to columns[A] Do C[ i,j ]= C[ i,j ]+A[ i,k ]*B[ k,j ] 8. Return C

The time to compute C is dominated by the number of scalar multiplications. To illustrate the different costs incurred by different paranthesization of a matrix product. Example: Consider three matrices A 10  100 , B 100  5 , and C 5  50 There are 2 ways to parenthesize ((AB)C) = D 10  5 · C 5  50 AB  10·100·5=5,000 scalar multiplications DC  10·5·50 =2,500 scalar multiplications (A ( BC)) = A 10  100 · E 100  50 BC  100·5·50=25,000 scalar multiplications Total: 75,000 AE  10·100·50 =50,000 scalar multiplications Total: 7,500

Matrix-chain multiplication problem Given a chain A 1 , A 2 , …, A n of n matrices, where for i =1, 2, …, n , matrix A i has dimension p i -1  p i Parenthesize the product A 1 A 2 …A n such that the total number of scalar multiplications is minimized

Before solving by Dynamic programming exhaustively check all paranthesizations. P(n) : paranthesization of a sequence of n matrices Counting the Number of Parenthesizations

We obtain the recurrence

1.The Structure of an Optimal Parenthesization Step 1: Characterize the structure of an optimal solution A i..j : matrix that results from evaluating the product A i A i +1 A i +2 ... A j An optimal parenthesization of the product A 1 A 2 ... A n – Splits the product between A k and A k + 1 , for some 1 ≤ k < n (A 1 A 2 A 3 ... A k ) · (A k +1 A k +2 ... A n ) – i.e., first compute A 1.. k and A k +1.. n and then multiply these two The cost of this optimal parenthesization Cost of computing A 1.. k + Cost of computing A k +1.. n + Cost of multiplying A 1.. k · A k +1.. n

Optimal (sub)structure: Suppose that optimal parenthesization of Ai;j splits between Ak and Ak+1. Then, parenthesizations of Ai;k and Ak+1;j must be optimal, too (otherwise, enhance overall solution — subproblems are independent!). Construct optimal solution: 1. split into subproblems (using optimal split!), 2. parenthesize them optimally, 3. combine optimal subproblem solutions.

2. Recursively def. value of opt. solution Let m[ i ; j] denote minimum number of scalar multiplications needed to compute Ai;j = Ai*Ai+1…. Aj (full problem: m[1; n]). Recursive definition of m[ i ; j]: if i = j, then m[ i ; j] = m[ i ; i ] = 0 ( Ai;i = Ai, no mult . needed).

We also keep track of optimal splits:

4.Computing the Optimal Cost

Computing the Optimal Cost(cont..)

Algorithm for Computing the Optimal Costs 21

Example:

The m and s table computed by MATRIX-CHAIN-ORDER for n=6

m [2,5]= min{ m [2,2]+ m [3,5]+ p 1 p 2 p 5 =0+2500+35  15  20=13000, m [2,3]+ m [4,5]+ p 1 p 3 p 5 =2625+1000+35  5  20=7125, m [2,4]+ m [5,5]+ p 1 p 4 p 5 =4375+0+35  10  20=11374 } = 7125

4. Constructing an Optimal Solution
Tags