动态规划法解矩阵链乘问题

     [问题]给定一个包含n个矩阵的链乘式,通过对矩阵加括号来变换矩阵相乘的次序。问应当怎样加括号才能使求解过程中乘法运算的总次数最少?最少的总次数是多少?

     [解析]假设矩阵链乘式A1A2A3A4A5的最优解为((A1)(A2A3))(A4A5) ,则(A1)(A2A3)必为链乘式A1A2A3的最优解(由反证法易得)。由此可知,该问题具有最优子结构性质。递推式如下;

     设链乘式AiAi+1Ai+2……Aj中矩阵An的列数为Columns[n],其划分的形式为 

(Ai……Ak)(Ak+1……Aj),则相应的乘法运算的总次数为,对左括号进行计算求得矩阵ALeft的过程中的最少总次数f(i)(k),加上对右括号进行计算求得矩阵ARight的过程中的最少总次数f(k+1)(j),再加上Columns[i-1] × Columns[k]的矩阵ALeft与Columns[k] × Columns[j]的矩阵ARight 相乘时乘法运算的总次数Columns[i-1] * Columns[k] * Columns[j]。所以链乘式AiAi+1Ai+2……Aj的最优解的值f(i)(j)就是k的取值从i一直取到j的过程中所得的最小的总次数,即

     f(i)(j) = Min{f(i)(k) + f(k+1)(j) + Columns[i-1] * Columns[k] * Columns[j]},i≤k<j

      

 

转载于:https://www.cnblogs.com/laifeiyao/p/3477938.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值