- 问题描述
给定一个n个矩阵的序列,如何调整运算次序使乘法次数最小。
矩阵乘法问题:给定n个矩阵的链(A1,A2,…,An),矩阵Ai的规模为
求完全括号方案,使得计算乘积所需标量乘法次数最少。 - 解决方案
动态规划方法的基本步骤:
- 刻画一个最优解的结构特征。
-递归的定义最优解的值。
-计算最优解的值,通常采用自底向上的方法。
-利用计算出的信息构造一个最优解。
令m[i,j]表示计算矩阵Ai..j所需标量次数的最小值。我们可以定义如下递归式:
这里i小于j,当i=j时,m[i,j]=0。
伪代码实现如下
- 刻画一个最优解的结构特征。
MATRIX-CHAIN_ORDER(p){
//p为数组,记录的是矩阵的规模,Ai矩阵的规模为p[i-1] x p[i]
n = p.length - 1; //矩阵数量