- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)