用java实现矩阵链乘积_矩阵最优链乘及Java实现

本文介绍了如何使用Java实现矩阵链乘积的最优运算顺序,通过矩阵乘法的性质,结合递归思想,自底向上计算最小代价,并给出具体的Java代码实现,展示最优链乘方案和最小代价。
摘要由CSDN通过智能技术生成

矩阵最优链乘及Java实现

给一系列矩阵\(A_1,A_2,...A_n\)进行链乘,找出最优运算顺序

矩阵乘法

\(\begin{bmatrix}

{a_1,a_2}\\

{a_3,a_4}\\\end{bmatrix}*\begin{bmatrix}

{b_1,b_2}\\

{b_3,b_4}\\\end{bmatrix}=\begin{bmatrix}

{a_1*b_1+a_2*b_3,a_1*b_2+a_2*b_4}\\

{a_3*b_1+a_4*b_3,a_3*b_2+a_4*b_4}\\\end{bmatrix}\)

一个p行q列的矩阵乘以一个q行r列的矩阵最终得到一个p行r列的矩阵

新矩阵中第i行第j列的数字等于第一个矩阵的第i行数字和第二个矩阵第j列数字一一对应乘积的和

由此可以看出两矩阵相乘总共标量乘法运算数为pqr,这就是衡量的标准

矩阵乘法满足结合律

\((AB)C=A(BC)\)

运算顺序不同带来的差异

假设有三个矩阵A,B,C相乘

矩阵

A

B

C

维度

10*2

2*10

10*2

(AB)C代价

\(Cost(AB)=10*2*10\)

\(Cost((AB)C)=10*2*10+10*10*2=400\)

A(BC)代价

\(Cost(BC)=2*10*2\)

\(Cost(A(BC)=10*2*2+2*10*2=80\)

解决思路

最优方案的子方案也是最优方案

当一个链乘

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值