From ee2d7a7bdbc2de73256f2173570bca11eff90692 Mon Sep 17 00:00:00 2001 From: Samya Subhro Roy Date: Mon, 14 Oct 2019 18:07:20 +0530 Subject: [PATCH] matrixChainMultiplication in python is written matrixChainMultiplication in python using dynamic programming algo is written --- .../MatrixChainMuliplication.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Dynamic Programming/MatrixChainMuliplication.py diff --git a/Dynamic Programming/MatrixChainMuliplication.py b/Dynamic Programming/MatrixChainMuliplication.py new file mode 100644 index 0000000..d45c9fa --- /dev/null +++ b/Dynamic Programming/MatrixChainMuliplication.py @@ -0,0 +1,44 @@ +#Matrix Chain Multiplication using dynamic programming approach +# A naive recursive implementation that +# simply follows the above optimal +# substructure property + +import sys + +# Matrix A[i] has dimension p[i-1] x p[i] +# for i = 1..n +def MatrixChainOrder(p, i, j): + + if i == j: + return 0 + + _min = sys.maxsize + + # place parenthesis at different places + # between first and last matrix, + # recursively calculate count of + # multiplications for each parenthesis + # placement and return the minimum count + for k in range(i, j): + + count = (MatrixChainOrder(p, i, k) + + MatrixChainOrder(p, k+1, j) + + p[i-1] * p[k] * p[j]) + + if count < _min: + _min = count; + + + # Return minimum count + return _min; + + +# Driver program to test above function +arr = [1, 2, 3, 4, 3]; +n = len(arr); + +print("Minimum number of multiplications is ", + MatrixChainOrder(arr, 1, n-1)); + + +# code is contributed by Samya Subhro Roy :)