Brackets in Matrix Chain Multiplication Java
PROGRAM TO MULTIPLY MATRICES EFFICIENTLY
OUTPUT:
Minimum number of multiplications is 18
import
java.io.*;
import
java.util.*;
class
GFG
{
static
int
[][] dp =
new
int
[
100
][
100
];
// Function for matrix chain multiplication
static
int
matrixChainMemoised(
int
[] p,
int
i,
int
j)
{
if
(i == j)
{
return
0
;
}
if
(dp[i][j] != -
1
)
{
return
dp[i][j];
}
dp[i][j] = Integer.MAX_VALUE;
for
(
int
k = i; k < j; k++)
{
dp[i][j] = Math.min(
dp[i][j], matrixChainMemoised(p, i, k)
+ matrixChainMemoised(p, k +
1
, j)
+ p[i -
1
] * p[k] * p[j]);
}
return
dp[i][j];
}
static
int
MatrixChainOrder(
int
[] p,
int
n)
{
int
i =
1
, j = n -
1
;
return
matrixChainMemoised(p, i, j);
}
// Driver Code
public
static
void
main (String[] args)
{
int
arr[] = {
1
,
2
,
3
,
4
};
int
n= arr.length;
for
(
int
[] row : dp)
Arrays.fill(row, -
1
);
System.out.println(
"Minimum number of multiplications is "
+ MatrixChainOrder(arr, n));
}
}
Minimum number of multiplications is 18
Comments
Post a Comment