Question: Recursive Matrix Chain Multiplication algorithm in MATLAB. I am trying to recreate the below Matrix Chain Multiplication algorithm recursively in MATLAB. The recursive function is
Recursive Matrix Chain Multiplication algorithm in MATLAB. I am trying to recreate the below Matrix Chain Multiplication algorithm recursively in MATLAB. The recursive function is giving the wrong results
Original function
function [M, K] = MatrixChain(p) n = size(p, 2) - 1; M = zeros(n); K = zeros(n); for l = 1 : n - 1 for i = 1 : n - l j = i + l; m1 = inf; kk = inf; for k = i : j - 1 x = M(i,k) + M(k+1,j) + p(i) * p(k + 1) * p(j+1); if (m1 >= x) m1 = x; kk = k; end end M(i, j) = m1; K(i, j) = kk; end
Recursive function
function [M, K] = MatrixChainRecursive(d, i, j, M, K)
if (i == j) M(i,j) = 0; else ml = inf; kk = inf; for k = i:j-1 x = MatrixChainRecursive(d, i, k, M, K) + MatrixChainRecursive(d, k+1, j, M, K) + d(i)*d(k+1)*d(j+1); if (ml > x(i,j)) ml = x(i,j); kk = k; end M(i, j) = ml; K(i, j) = kk; disp(M); %for testing only, looks like I am getting some right values, but some wrong disp(K); %" " end end end
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
