ch09 代数与数值算法.pptVIP

  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文档。上传文档
查看更多
ch09 代数与数值算法

第九章;特点;求幂运算;另一种归纳方法:nk=(nk/2)2,将问题归约成输入参数为n和k/2的问题。将k的值减小一半对应于将其规模减小一个常数值,故乘法次数和k的规模成线性关系。 如果k是偶数,就简单地对参数为k/2的问题的解进行平方;如果k是奇数,则将参数为(k-1)/2的问题的解平方后再乘以n。所以,乘法的运算量至多为2log2k。 Algorithm Power_by_Repeated_Squaring(n,k) Input: n and k (two positive integers) Output: P (the value of nk ) begin if k=1 then P:=n; else z:=Power_by_Repeated_Squaring(n, k div 2); if k mod 2=0 then P:=z*z else P:=n*z*z end;最大公约数;Algorithm GCD(m,n) Input: m and n (two positive integers) Output: gcd (the gcd of m and n) begin a:=max(n,m); b:=min(n,m); r:=1; while r0 do {r is the remainder} r:=a mod b; a:=b; b:=r; gcd:=a end;多项式乘法;;矩阵乘法;递归形式;Strassen算法;算法对比;布尔矩阵;第一个思想;第二个思想;设Ci=AiBi,其第j行是若干Bi行的布尔和(根据Ai的第j行)。这里并不直接计算Ci的每一行,而是使用类似于前述算法中所使用的方法,即预先计算所有的可能性。由于Ai每行中有k个元素,所以Bi行的各种可能组合一共有2k种。令k=log2n并再一次假定k是一个整数,预先计算所有2k=2^{log2n}=n种组合,然后将结果存储在一个表中。相比于先前的算法,该表包含n行而不是n比特;因此,存储空间需要O(n2)。此外,由于该表还依赖于Bi,所以必须为每一个Bi均建立起与之对应的表。为了寻找Ci的第j行,检索Ai的第j行并找到需要相加的Bi行组合。Ai第j行的二进制表示所对应的整数可以代表这样的组合,这个整数是Ci第j行在表中的存储地址。在表中寻找到Ci中的一行需要花费O(1)时间,而将这一行复制到Ci中适合位置需要花费O(n)时间。综上,可以在时间O(n2)内计算Ci。;现在说明可以在时间O(n2k)内计算Bi行之和的各种可能组合 归纳基础:计算对应于0的行之和是显然可行的。 归纳假设:知道如何计算对应小于i的整数的行之和组合。 首先,假定i-1的二进制表示为xxxx011111(即最低位的0后继j个1),那么对应于i的行之和等于对应于xxxx000000的行之和加上对应于00001000000的行之和。由于xxxx000000小于i,根据归纳假设可以得到其所对应的行之和,现在只需要再添加一行即可,添加一行需要进行n次布尔加法运算,且总共有2k种组合。因此,所有的预先计算均可以通过O(n2k)次运算完成。若k=log2n,则运行时间为O(n2)。;Algorithm Boolean_Matrix_Multiplication(A,B,n,k) Input: A, B (two n*n Boolean matrices), and k (an integer, and k divides n for simplicity) Output: C (the product of A and B) begin Initialize the matrix C to 0 for i:=0 to n/k-1 do Construct Tablei; {Tablei is an 2^k array of Boolean vectors of size n which contains all possible combinations of sums of k rows of Bi} m:=i*k; for j=1 to n do Let Addr be the k-bit number A[j,m+1]A[j,m+2]...A[j,m+k]; add Tablei[Addr] to row j in C end;O(n3/log2n)的方法;;多项

文档评论(0)

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

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

1亿VIP精品文档

相关文档