矩阵连乘

这篇博客探讨了如何找到矩阵连乘的最佳计算次序,利用递归关系和最优子结构来解决矩阵连乘问题。通过计算最优值并自底向上存储子问题的解,实现了高效计算矩阵连乘积的算法,最终实现的时间复杂度为O(n^3)。
摘要由CSDN通过智能技术生成

一.问题描述

给定n个矩阵{A1,A2,……,An},其中Ai与Ai+1是可乘的,i=1,2,……,n-1。

例如:

 计算三个矩阵连乘{A1,A2,A3};维数分别为10*100 , 100*5 , 5*50

 按此顺序计算需要的次数((A1*A2)*A3):10X100X5+10X5X50=7500次

 按此顺序计算需要的次数(A1*(A2*A3)):10X5X50+10X100X50=75000次

 所以要解决的问题是:如何确定矩阵连乘积A1A2,……An的计算次序,使得按此计算次序计算矩阵连乘积需要的数乘次数达到最小化。

二.问题分析

由于矩阵乘法满足结合律,所以计算矩阵连乘的连乘积可以与许多不同的计算计算次序,这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说连乘积已完全加括号,那么可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。

完全加括号的矩阵连乘积可递归地定义为:

(1).单个矩阵是完全加括号的;

(2).矩阵连乘积A是完全加括号的,则A可以表示为2个完全加括号的矩阵连乘积B和C的乘积并加括号,及A=(BC);

举个例子,矩阵连乘积A1A2A3A4A5,可以有5种不同的完全加括号方式:

   (A1(A2(A3A4))),(A1((A2A3)A4)),((A1A2)(A3A4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值