Repository where I mostly put random python scripts.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.2 KiB

  1. import math
  2. """
  3. Jeffery Russell
  4. 11-12-18
  5. """
  6. def minMul(S):
  7. """
  8. Simple function to print the matrixes used in
  9. the minimum matrix chain multiplication problem
  10. using dynamic programming.
  11. """
  12. n = len(S)
  13. m = [[math.inf for i in range(n)] for j in range(n)]
  14. c = [[0 for i in range(n)] for j in range(n)]
  15. for i in range(0, n):
  16. m[i][i] = 0
  17. for l in range(1, n + 1):
  18. for i in range(0, n-l + 1):
  19. j = l + i -1
  20. for k in range(i, j):
  21. temp = m[i][k] + m[k + 1][j] + S[i][0] * S[k][1] * S[j][1]
  22. print(temp)
  23. if temp < m[i][j]:
  24. m[i][j] = temp
  25. c[i][j] = k + 1
  26. for i in range(0, n):
  27. for y in range(0, n):
  28. print(str(m[i][y]) + " ", end =" ")
  29. print()
  30. print()
  31. print()
  32. for i in range(0, n):
  33. for y in range(0, n):
  34. print(str(c[i][y]) + " ", end =" ")
  35. print()
  36. """
  37. Makes sure that other programs don't execute the main
  38. """
  39. if __name__ == '__main__':
  40. try:
  41. minMul([(10,100),(100, 5),(5, 50)])
  42. #minMul([(5,10),(10,3),(3,12), (12,5), (5,50), (50,6)])
  43. except KeyboardInterrupt:
  44. exit()