From 8467b0b6e6bbf0d2161230148cf90c7e031842e5 Mon Sep 17 00:00:00 2001 From: Kanishk <56789607+kanishkguptagit@users.noreply.github.com> Date: Sat, 29 Oct 2022 16:38:52 +0530 Subject: [PATCH] Create MatrixChainMultiplication.py --- MatrixChainMultiplication.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 MatrixChainMultiplication.py diff --git a/MatrixChainMultiplication.py b/MatrixChainMultiplication.py new file mode 100644 index 0000000..26ce1ca --- /dev/null +++ b/MatrixChainMultiplication.py @@ -0,0 +1,29 @@ +import sys + +def MatrixChainOrder(p, n): + m = [[0 for x in range(n)] for x in range(n)] + + for i in range(1, n): + m[i][i] = 0 + + # L is chain length. + for L in range(2, n): + for i in range(1, n-L + 1): + j = i + L-1 + m[i][j] = sys.maxsize + for k in range(i, j): + + # q = cost / scalar multiplications + q = m[i][k] + m[k + 1][j] + p[i-1]*p[k]*p[j] + if q < m[i][j]: + m[i][j] = q + + return m[1][n-1] + +# Driver program to test above function +arr = [1, 2, 3, 4, 3] +size = len(arr) + +print("Minimum number of multiplications is " + + str(MatrixChainOrder(arr, size))) +# This Code is contributed by Bhavya Jain