1.分析优化解的结构
两个记号:
(2)优化解的结构
证明:若计算
2.子问题堆叠性: 计算
3.递归定义最优解代价
用子问题的最优解递归定义原问题的最优解
m[i,j]表示计算矩阵Ai,j所需标量乘法次数的最小值,那末原问题的最优解-计算
其中
4.递归划份子问题
1个
5.自底向上计算优化解的代价
以m[1,5]为例:
m[1,1] m[1,2] m[1,3] m[1,4] m[1,5]
m[2,2] m[2,3] m[2,4] m[2,5]
m[3,3] m[3,4] m[3,5]
m[4,4] m[4,5]
m[5,5]
想要计算m[1,5],需要计算m[1,1] m[1,2] m[1,3] m[1,4]和m[2,5],m[3,5], m[4,5],m[5,5]。
要计算m[1,4],需要计算m[1,1] m[1,2] m[1,3]和[2,4],m[3,4], m[4,4]
要计算m[2,5],需要计算m[2,2] m[2,3] m[2,4]和m[3,5], m[4,5],m[5,5]
……..
所以最需要先计算的是对角线的上元素m[1,1],m[2,2],m[3,3],m[4,4],m[5,5],它们的结果都是0
接下来就能够计算m[1,2],m[2,3],m[3,4],m[4,5]了
以后计算m[1,3],m[2,4],m[3,5]
……
最后计算出m[1,5]
每次均计算出对角线上的1组元素,且是自底向上的
6.算法思想
1.先对第1层对角线值给初值0(m[i,i]=0)
2.对有n个矩阵的输入来讲,为计算m[1,n],需要n⑴个对角线(第1层对角线已计算过了)
3.对自底向上的第i层对角线来讲,共需要计算i个不同的m值
4.对每个m值,通过
所以总共需要3层循环。
Matrix-Chain-Order(n)
For
For