AlgoDA_LectureNotes_W5.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文档。上传文档
查看更多
AlgoDamp;A_LectureNotes_W5.ppt

Last Section Divide and Conquer MINMAX: 2n – 2 vs. 3n/2 – 2 二分搜索: 算法BINARYSEARCHREC在n 个元素组成的已排序数组中搜索某个元素所执行的元素比较次数不超过 ; 非递归; 合并排序: nlogn 寻找第 k 小元素:20cn 划分算法与快速排序:n-1 大整数乘法 设u 和v 是两个n 位的整数(二进制),传统的乘法算法需要(n2) 数字相乘来计算u 和v 的乘积。 使用分治技术,这个上界将显著减小。 为简单起见,假定n 是2的幂。 把每个整数分为两部分,每部分为n/2位,则u 和v 可重写为u = w2n/2 + x 和v = y2n/2 +z U v 大整数乘法 u 和v 的乘积可以计算为: uv = (w2n/2 + x)(y2n/2 +z) = wy2n + (wz + xy) 2n/2 + xz 用2n 做乘法运算相当于简单地左移n 位,它需要θ( n) 时间。这样,在这个公式中,有4次乘法运算和3次加法运算,这蕴含着以下递推式成立 T (n) = d 若n = 1 =4T(n/2) + bn 若n 1 式中b 和d都是大于0的常量。 由定理,递推式的解是T(n) = ( n2). 大整数乘法 考虑用以下恒等式计算wz + xy wz + xy = (w + x) ( y + z) – wy – xz 由于wy 和 xz 不需要做二次计算,结合以上二式,仅需3次乘法运算,即 uv = wy2n + (( w + x) ( y + z) – wy –xz) 2n/2 + xz 这样u 和v的乘法运算简化为3次n/2规模整数的乘法运算和6次加法运算,这些加法所花时间是( n)。 大整数乘法 此方法产生以下递推式 T (n) = d 若n = 1 =3T(n/2) +bn 若 n1 上式中的b 和d 是适当选择的某个大于0的常量。由定理得出: T (n) =Θ ( n log 3) = O (n1.59) 这是对传统方法的一个显著改进。 矩阵乘法 A 和B 是两个n x n 的矩阵,我们希望计算它们的乘积C = AB 传统算法 C 由以下公式计算 C (i, j) = A (i, k) B (k, j) 算法需要n3次乘法运算和 n3 –n2次加法运算, 导致其时间复杂性为Θ ( n3)。 递归方法 设a, m分别表示加法和乘法的耗费 T(n) =m n=1 =8T(n/2)+4(n/2)2 a n=2 T(n)= mn3+an3-an2 同传统方法 STRASSEN 算法 算法的基本思想在于以增加加减法的次数来减少乘法次数: 用了7次n/2 x n/2 矩阵乘法和18次n/2 x n/2 矩阵的加法 设 A = a11 a12 和B = b11 b12 a21 a22 b21 b22 为了计算矩阵的乘积 C = a11 a12 b11 b12 a21 a22 b21 b22 STRASSEN 算法 首先计算以下的乘积 d1 = (a11 + a22) (b11 + b22) d2 = (a21 + a22) b11 d3 = a11 (b12 – b22) d4 = a22 (b21 –b11) d5 = (a11 + a12) b22 d6 = (a21 – a11) (b11 + b12) d7 = (a12 – a22) ( b21 + b22) 接着从下面式子计算出C C = d1 + d4 – d5 + d7 d3 + d5 d2 + d4 d1 + d3 – d2 + d6 STRASSEN 效率 算法用到的加法是18次,乘法是7次,对于其运行时间产生以下递推式 T (n) = m 若n=1 =7T (n/2) + 18(n/2)2 a 若n≥ 2 T (n) = mnlog7+6anlog7-6an2 即运行时间为Θ (nlog7)= O(n2.81)。 比较 比较 最近点对 T(n)=1 若n=2 =3 若n=3 =2T(n/2)+ O(nlgn) 若n3 Θ(nlog2n) T 中点按Y坐标排序 最近点对 T(n)=1 若n=2 =3 若n=3 =2T(n/2)+ Θ(n) 若n3 Θ(

文档评论(0)

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

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档