| @ -0,0 +1,55 @@ | |||||
| import math | |||||
| """ | |||||
| Jeffery Russell | |||||
| 11-12-18 | |||||
| """ | |||||
| def minMul(S): | |||||
| """ | |||||
| Simple function to print the matrixes used in | |||||
| the minimum matrix chain multiplication problem | |||||
| using dynamic programming. | |||||
| """ | |||||
| n = len(S) | |||||
| m = [[math.inf for i in range(n)] for j in range(n)] | |||||
| c = [[0 for i in range(n)] for j in range(n)] | |||||
| for i in range(0, n): | |||||
| m[i][i] = 0 | |||||
| for l in range(1, n + 1): | |||||
| for i in range(0, n-l + 1): | |||||
| j = l + i -1 | |||||
| for k in range(i, j): | |||||
| temp = m[i][k] + m[k + 1][j] + S[i][0] * S[k][1] * S[j][1] | |||||
| print(temp) | |||||
| if temp < m[i][j]: | |||||
| m[i][j] = temp | |||||
| c[i][j] = k + 1 | |||||
| for i in range(0, n): | |||||
| for y in range(0, n): | |||||
| print(str(m[i][y]) + " ", end =" ") | |||||
| print() | |||||
| print() | |||||
| print() | |||||
| for i in range(0, n): | |||||
| for y in range(0, n): | |||||
| print(str(c[i][y]) + " ", end =" ") | |||||
| print() | |||||
| """ | |||||
| Makes sure that other programs don't execute the main | |||||
| """ | |||||
| if __name__ == '__main__': | |||||
| try: | |||||
| minMul([(10,100),(100, 5),(5, 50)]) | |||||
| #minMul([(5,10),(10,3),(3,12), (12,5), (5,50), (50,6)]) | |||||
| except KeyboardInterrupt: | |||||
| exit() | |||||