矩阵连乘问题描述
A(35)A(57)A(7*2)的向乘次数和划分有关系吗?
(A(35)A(57))A(72) 相乘次数: (357)+(37)*2 = 147
A(35)(A(57)A(72)) 相乘次数: (572)+3(5*2) = 100
答案很明显是有关系的。
分析
求 A1A2A3…An
定义 AiAi+1…Ak…Aj-1Aj 子列, 可看成是Ai…Ak,Ak…Aj
确定k的位置,然后按照递归的思想来逐步解决
求得结果后,使i=1,j=n原问题即可求解。
建立递归关系(状态转移方程)
1 | 设 |
s[i][j]的确定方法:
对于Ai……Aj
k=i, (Ai)(…Aj)
k=i+1, (AiAi+1)(…Aj)
k=j-1, (AiAi+1…Aj-1)Aj
求出m[i][j]的最小k值,存入s[i][j],
1 | #include<iostream> |
参考
https://www.jianshu.com/p/8f2e12d6e10b
动态规划思想:
将大问题划分为具有相同特征的小问题;
小问题之间往往相互联系;
从小问题一步步求解大问题。
适合求解最优解问题