动态规划之矩阵链乘

首先为什么会有矩阵链乘法:
假设有4个矩阵A1,A2,A3,A4,他们的规模分别是5X2,2X3,3X4,4X5(要想矩阵链乘必须满足矩阵行等于矩阵列,A1是一行2列的矩阵,依此类推),矩阵满足结合律,可以是(A1XA2)X(A3XA4),也可以是A1X(A2XA3)XA4,那么按照哪种方法矩阵相乘的次数最少?
显然第一种乘了2X3X5+3X4X5+4X5X5=190次,而第二种乘了2X3X4+2X4X5+4X5X5=164次。矩阵相乘的分配方法不同,计算时间也不相同,那么矩阵链乘法就是求解最佳分配方法。
矩阵规模序列:
假设一个矩阵规模序列P为{5,10,3,12,5,50,6}那么这些矩阵的规模为{5X10,10X3,3X12,12X5,5X50,50X6}。
矩阵链乘法:
动态规划是将大的复杂问题分解成小的子问题,通过对小的子问题的求最优解,得到大的复杂问题的最优解。
假设有n个矩阵A1~An,n太大了我求不出来,那么n=1时得到最优解是什么?
显然相乘次数为0,不用分配。对于n=2时,假设矩阵规模为序列为{5,10},那么很显然相乘次数为1X5X10=50次,容易计算。那么n越来越大怎么办,假设在第i个矩阵和第j个矩阵之间有一个矩阵Ak,而Ak恰好就是最佳的分割点,那么我只需要计算Ai和Ak之间的最优相乘次数和Ak与Aj之间的最优相乘次数再加上Pi-1XPkXPj就可以了。即M[i,j] = M[i,k]+M[k,j]+PiXPkXPj.矩阵M存储的是矩

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值