动态规划-矩阵链乘法

这篇博客详细介绍了如何使用动态规划解决矩阵链乘法问题,包括问题描述、计算括号化方案的数量以及如何应用动态规划方法。通过定义状态和递归公式,给出自底向上的计算最优解的算法,并提供了具体的Java实现代码示例。
摘要由CSDN通过智能技术生成

动态规划-矩阵链乘法

采用动态规划的方式求解矩阵链乘法问题

问题描述

  1. 给定一个n个矩阵的序列(矩阵链< A 1 , A 2 , . . . , A n A_{1},A_{2},...,A_{n} A1,A2,...,An>),希望计算其乘积
    A 1 A 2 . . . A n A_{1}A_{2}...A_{n} A1A2...An---------------------------------------------------------------(1)

  2. 使用括号明确计算次序,然后依据标准矩阵计算乘法计算其结果
    已知,任何加括号的方式都将得到相同的计算结果。所以为了减少计算的复杂程度(不同计算顺序,乘法次数也不同),引出如下定义:已知,任何加括号的方式都将得到相同的计算结果。所以为了减少计算的复杂程度(不同计算顺序,乘法次数也不同),引出如下定义:
    完全括号化的矩阵链:
    a. 它是单一矩阵;
    b. 或者是两个完全括号化的矩阵链乘积,且已加外括号。例如矩阵链为< A 1 , A 2 , A 3 , A 4 A_{1},A_{2},A_{3},A_{4} A1,A2,A3,A4>的一个完全括号化的矩阵链为 ( A 1 ( A 2 ( A 3 A 4 ) ) ) (A_{1}(A_{2}(A_{3}A_{4}))) (A1(A2(A3A4)))

  3. 寻找最少乘法次数
    由标准矩阵计算乘法方式可知,假设计算 A p ∗ q A q ∗ r A_{p*q}A_{q*r} ApqAqr则乘法次数一共 p ∗ q ∗ r p*q*r pqr次。(两个矩阵相乘的条件是必须相容,即前一个矩阵的列数等于后一个矩阵的行数)

  4. 矩阵乘法链问题的简化
    给定的n个矩阵的链< A 1 , A 2 , . . . , A n A_{1},A_{2},...,A_{n} A1,A2,...,An>,且由上一小节可知我们可以将数据链的规模简化为< A p 0 ∗ p 1 , A p 1 ∗ p 2 , . . . , A p n − 1 ∗ p n A_{p_{0}*p_{1}},A_{p_{1}*p_{2}},...,A_{p_{n-1}*p_{n}} Ap0p1

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值