矩阵连乘问题.docxVIP

  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文档。上传文档
查看更多
. 目录: 矩阵连乘问题: 描述矩阵连乘问题 分析矩阵连乘问题以及对递归式的推导 1)直接递归思路 2)备忘录思路 3)动态规划思路 伪代码的方式描述算法: 1)直接递归算法 2)备忘录算法 3)动态规划算法 把算法转换成程序实现的过程及结果 1)直接递归算法程序 2)备忘录算法程序 3)动态规划算法程序 .. . 描述矩阵连乘问题: 定 n 个矩 { A A A } ,其中 A A 是可乘的, i=1,2, ? ,n-1。考察 n 个矩 的 1, 2, n i 和 i 1 乘 A1, A2 , An 。由于矩 乘法具有 合律,故 算矩 的 乘 可以有 多不同的 算次序。 种 算次序可以用加括号的方式来确定。若一个矩 乘 的 算次序完全确定, 也就是 乘 已完全加括号, 可依次序反复 用 2 个矩 相乘的 准算法 算出矩 乘 。完全加括号的矩 乘可 地定 : ( 1) 个矩 是完全加括号的; ( 2)矩 乘 A 是完全加括号的, A 可表示 2 个完全加括号的矩 乘 B 和 C 的乘 并加括号, 即 A=(BC)。 矩 A 和 B 可乘的条件是矩 A 的列数等于矩 B 的行数。若 A 是一个 p× q 的矩 , B 是一个 q× r 的矩 ,那么 C=A ×B 就是一个 p× r 矩 。它的 算是三重循 的, 算量 是 pqr。如果加括号后矩 的量是不同的,所以我 的 就是要 如何 乘的矩 加括号才能使矩 的 算量最少。 搜索法: 于 n 个矩 的 乘 , 有不同的 算次序 P(n) 。由于可以先在第 k 个和第 k+1 个矩 之 将原矩 序列分 两个矩 子序列, k=1,2,...,n-1 ;然后分 两个 矩 子序列完全加括号; 最后 所得的 果加括号, 得到原矩 序列的一种完全加括号方式。 由此可得 P(n) 的 式如下: 1 n=1 P( n) = n 1 P(k )P(n k ) n1 k 1 解此 方程可得, P(n)=C(n-1), 而 C(n) 是一个指数增 的函数。因此 搜索法不是一个有效的算法。以下将用三种方法来解决矩 乘 的最 加括号方式以及最 解。 分析矩阵连乘问题以及对递归式的推导 将矩 乘 Ai , Ai 1, AjA[i:j] 。考察 算 A[1:n] 的最 算次序。 个 的一个关 特征是: 算 A[1:n] 的最 次序包含的 算矩 子 A[1:k] 和 A[k+1:n] 的次序 也是最 的。 是因 :定 矩 A i i-1 i i-1 k ,A[k+1,j] 的 数 p × p , A[i:k] 的 算次数 p × p 的 算次数 pk× pj,而 两个 的矩 最后相乘 的 算量是固定的, pi-1× pk× pj。所 以, 矩 乘 算次序 的最 解包含着其子 的最 解。 种性 称 最 子 构 性 。 ( 1)、直接 的思路: 算 A[i:j] , 1≤ i ≤ j≤ n,所需最少数乘次数 m[i][j], 原 的最 m[1][n] 。由分析得知: m[i][j] 可以 的定 : 0 i=j m[i][j]= min{ m[i ][ k] m[k 1][ j ] pi 1 pkpj} ij i k j m[i][j] 出了最 ,即 算 A[i][j] 所需的最少数乘次数。同 确定了 算 A[i : j]的最 次序中的断开位置 k,也就是 , 于 个 k 有 m[i][j]= m[ i ][ k] m[ k 1][ j ] pi 1 pkpj 若将 于 m[i][j] 的断开位置 ks[i][j], 在 算出最 m[i][j] 后,可 地由 s[i][j] 构造 出相 的最 解。 可以 明 算法的 算 T(n) 有指数下界,由算法的 部分可得: O(1) n=1 T(n) ≥ .. . n 1 1+ (T ( k) T (n k) 1)n1 k 1 因此,当 n1 时, T(n) ≥n+2 n 1 T (k ) k 1 据此,可用数学归纳法证明 T(n) ≥ 2n-1= (2n ) 。直接递归法的计算时间随 n 的增长指数增 长。 ( 2)、备忘录方法的思路: 备忘录方法为每个子问题建立一个记录项, 初始化时, 该记录项 存入一个特殊的值, 表示该问题尚未求解。在求解过程中,对每个待求的子问题, 首先查看 其相应的记录项。若记录项中存储的是初始化时存入的特殊值,则表示该问题第一次遇到, 此时计算出该子问题的解, 并保存在相应的记录项中, 以备以后查看。 若记录项中存储的不 是初始

文档评论(0)

159****5521 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档