计算矩阵连乘积.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算矩阵连乘积 问题描述 在科学计算中经常要计算矩阵的乘积。矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数。若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵。其标准计算公式为: 由该公式知计算C=AB总共需要pqr次的数乘。 现在的问题是,给定n个矩阵{A1,A2,…,An}。其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要求计算出这n个矩阵的连乘积A1A2…An。 ??? 由于矩阵乘法满足结合律,故连乘积的计算可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序已完全确定,也就是说该连乘积已完全加括号,则我们可以通过反复调用两个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘积可递归地定义为: 单个矩阵是完全加括号的; 若矩阵连乘积A是完全加括号的,则A可表示为两个完全加括号的矩阵连乘积B和C的乘积并加括号,即A=(BC)。 例如,矩阵连乘积A1A2A3 A4可以有以下5种不同的完全加括号方式: ??????? (A1(A2(A3A4))), ??????? (A1((A2A3)A4)), ??????? ((A1A2)(A3A4)), ??????? ((A1(A2A3))A4), ??????? (((A1A2)A3)A4)。 每一种完全加括号方式对应于一种矩阵连乘积的计算次序,而这种计算次序与计算矩阵连乘积的计算量有着密切的关系。 为了说明在计算矩阵连乘积时加括号方式对整个计算量的影响,我们来看一个计算3个矩阵{A1,A2,A3}的连乘积的例子。设这3个矩阵的维数分别为10×100,100×5和5×50。若按第一种加括号方式((A1A2)A3)来计算,总共需要10×100×5+10×5×50=7500次的数乘。若按第二种加括号方式(A1(A2A3))来计算,则需要的数乘次数为100×5×50+10×100×50=75000。第二种加括号方式的计算量是第一种加括号方式的计算量的10倍。由此可见,在计算矩阵连乘积时,加括号方式,即计算次序对计算量有很大影响。 于是,人们自然会提出矩阵连乘积的最优计算次序问题,即对于给定的相继n个矩阵{A1,A2,…,An}(其中Ai的维数为pi-1×pi ,i=1,2,…,n),如何确定计算矩阵连乘积A1A2…An的一个计算次序(完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少。 说明:计算两个均为n×n的矩阵(即n阶方阵)相乘还有一种Strassen矩阵乘法,利用分治思想将2个n阶矩阵乘积所需时间从标准算法的O(n3)改进到O(nlog7)=O(n2.81)。目前计算两个n阶方阵相乘最好的计算时间上界是O(n2.367)。但无论如何,所需的乘法次数总随两个矩阵的阶而递增。在这道题中只考虑采用标准公式计算两个矩阵的乘积。 参考解答 计算矩阵连乘积 问题描述 参考解答 ??? 解这个问题的最容易想到的方法是穷举搜索法。也就是列出所有可能的计算次序,并计算出每一种计算次序相应需要的计算量,然后找出最小者。然而,这样做计算量太大。事实上,对于n个矩阵的连乘积,设有P(n)个不同的计算次序。由于我们可以首先在第k个和第k+1个矩阵之间将原矩阵序列分为两个矩阵子序列,k=1,2,…,n-1;然后分别对这两个矩阵子序列完全加括号;最后对所得的结果加括号,得到原矩阵序列的一种完全加括号方式。所以关于P(n),我们有递推式如下: ?? 解此递归方程可得,P(n)实际上是Catalan数,即P(n)=C(n-1),其中, ?? 也就是说,P(n)随着n的增长是指数增长的。因此,穷举搜索法不是一个有效算法。 ??? 下面我们来考虑用动态规划法解矩阵连乘积的最优计算次序问题。此问题是动态规划的典型应用之一。 1.分析最优解的结构 ??? 首先,为方便起见,将矩阵连乘积AiAi+1…Aj简记为Ai…j。我们来看计算A1…n的一个最优次序。设这个计算次序在矩阵Ak和Ak+1之间将矩阵链断开,1=kn,则完全加括号方式为((A1…Ak)(Ak+1…An))。照此,我们要先计算A1…k和Ak+1…n,然后,将所得的结果相乘才得到A1…n。显然其总计算量为计算A1…k的计算量加上计算Ak+1…n的计算量,再加上A1…k与Ak+1…n相乘的计算量。 ??? 这个问题的一个关键特征是:计算A1…n的一个最优次序所包含的计算A1…k的次序也是最优的。事实上,若有一个计算A1…k的次序需要的计算量更少,则用此次序替换原来计算A1…k的次序,得到的计算A1…n的次序需要的计算量将比最优次序所需计算量更少,这是一个矛盾。同理可知,计算A1…n的一个最优次序所包含的计算矩阵子链Ak+1…n的次序也是最优的。根据该问题的指标函数

文档评论(0)

bhl0572 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档