算法导论2 动态规划 矩阵链乘法

这篇博客探讨了如何有效地计算多个矩阵相乘的最小乘法次数。介绍了自顶向下递归和自底向上动态规划两种方法,分别阐述了它们的原理和实现细节,并提供了相关代码示例。通过这两种方法,可以找到最佳的矩阵乘法顺序以减少运算次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1.  问题
    1. 有n个矩阵相乘(A1A2A3...An),任何一个矩阵 A的维度为Pi-1 * Pi  ; 求如何拆分矩阵相乘使得矩阵乘法次数最小
  2. 自顶向下的递归方法
    1. 对于任何一个子集Ai...Aj ; 如果i==j,则为一个矩阵,乘法次数m(i,j) 为零;
    2. 否则从各个索引位置k( i...j )拆分成前后两个子矩阵相乘次数,再加上 Pi-1*Pk*Pj的值;m(i,j) = min(m(i,k) + m(k+1,j) + Pi-1*Pk*Pj)
  3. 自底向上的动态规划
    1. 需要一个二维数组存储 :从下标1到n-相乘长度  +1,从矩阵相乘的长度1到n;的最小相乘次数;
    2. 如果矩阵长度为1,则m(i,i) = 0; 如果矩阵长度为2,则为 m(i,j) = m(i,i) + m(j,j) + Pi-1*Pi*Pj;如果矩阵长度为+2;则m(i,j) = m(i,k) + m(k+1,j) + Pi-1 * Pk *Pj
  4. 代码
    1. src/samples/algorith/C152MatrixMultiply.ts · Bob/LayaAir - Gitee.com
  5. 结果

     

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值