问题描述
- n个矩阵相乘,有一系列矩阵按顺序排列,每个矩阵的行数=前一个矩阵的列数
- 输入:n个矩阵组成的矩阵链U1…n=<U1,U2,…Un>
矩阵链U1…n对应的维度数分别为p0,p1,…,pn,Ui的维度为pi-1xpi - 输出:找到一种加括号的方式,以确定矩阵链乘法的计算顺序,使得最小化矩阵链标量乘法的次数
代码
import numpy
def Matrix_Chain_Multiply(p, n):
"""
:param p:矩阵维度数组p
:param n:矩阵个数n
:return:最小标量乘法次数,分割方式追踪数组Rec
"""
# 初始化
D = numpy.zeros((n, n), dtype="int")
Rec = numpy.zeros((n, n), dtype="int")
# 动态规划
for l in range(2, n + 1): # 区间长度从小到大
# 依次计算子问题