网站大量收购独家精品文档,联系QQ:2885784924

计算机算法设计与分析4第四章分治法.pptVIP

计算机算法设计与分析4第四章分治法.ppt

  1. 1、本文档共77页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 首先调用QUICKSORT(1,7) //low?1, high?7 if 1?7 then { j?8; call PARTITION(1, 8); call QUICKSORT(low, j ?1) call QUICKSORT(j+1, high) } end QUICKSORT 快速分类实例分析过程(I) 等PARTITION(1, 8)调用结束后,返回参数j的值,才能执行递归调用 PARTITION(m, p) //m?1, p?8 t?A[m]?5; i?m?1; loop(第1次) loop i?? until A[i]?t ; i?3 loop p? ? until A[p]?t ; p?6 if (i?p) then A[i]? A[p]; A[1] A[2] A[3] A[4] A[5] A[6] A[7] 5 3 9 2 7 1 8 A[1] A[2] A[3] A[4] A[5] A[6] A[7] 5 3 1 2 7 9 8 * A[m]?A[p]; 即A[1]?A[4]?2 A[p]?t; 即A[4]?5 end // p?4的值带回 loop(第2次,i?3, p?6) loop i?? until A[i]?t ; i?5 loop p? ? until A[p]?t ; p?4 if (i≮p) 执行else exit loop1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] 5 3 1 2 7 9 8 A[1] A[2] A[3] A[4] A[5] A[6] A[7] 2 3 1 5 7 9 8 递归调用 QUICKSORT(low, j?1) 即QUICKSORT(1, 3) 递归调用 QUICKSORT(j?1,high) 即QUICKSORT(5, 7) 快速分类实例分析过程(II) * 快速分类算法的分析 I :时间复杂性 假设前提 互不相同;随机选取划分元素 划分单元随机选取的改进 快速分类的性能取决于划分的对称性! 随机选取更合理,因为最好能找到中间元素 最坏情况下: 划分算法比较次数为元素数:p?m ?1 第i级的比较次数:n?i?1 (实际上是固定的) 最坏情况下级数为n?1(每次取最小或最大值) 总和:n+(n?1)+?= O(n2) 平均情况下: 划分元素最终位置机会均等, 运用概率公式得: * 快速分类算法的分析 II :栈空间使用 递归算法:最坏情况下 ?(n) 改进的迭代算法: 每次选择小的文件继续处理(较小的文件在处理过程中相对迭代次数少,可能产生的栈空间占用少)?(logn) 归并分类和快速分类算法的比较 * 选择问题定义 算法4.15 举例 分析: 最坏情况下:?(n2) 平均情况下:?(n) 4.6 选择问题 * * 构造最坏情况下?(n)的选择算法 二次中间值规则 粗略算法4.16 分析 Select2的实现 * 4.7 斯特拉森矩阵乘法 传统方法及计算时间 斯特拉森矩阵乘法及计算时间 * A和B的乘积矩阵C中的元素C(i,j)定义为:  若依此定义来计算A和B的乘积矩阵C,则每计算C的一个元素C(i, j),需要做n次乘法和n?1次加法。因此,计算出矩阵C中的 n2个元素所需的计算时间为O(n3) 传统方法及计算时间 * 斯塔拉森算法的实现基础 假定A和B的级数n是2的幂,否则,添加适当的全零行和全零列,使其变成级是2的幂的方阵。 将A和B都分成4个(n?2)?(n?2)的方形矩阵,于是A和B就可以看成是两个以(n?2)?(n?2)矩阵为元素的2?2矩阵。 1969年,斯特拉森(V. Strassen)利用分治策略并加上一些处理技巧,设计出一种矩阵乘法。他所设计的算法的计算时间是O(n2.81)。 * 将矩阵A,B和C中每一矩阵都分块成4个大小相等的子矩阵。由此可将方程C=AB重写为: 由此可得: 复杂度分析 一般分治法的实现思想 * 复杂度分析 T(n)=?(n3) 乘法次数较多导致算法的计算时间数量级没有降低。斯特拉森在分治法的基础上使用一种减少乘法次数而让加减法次数相应增加的处理方法来计算Cij。 一般分治法复杂度分析 * 斯塔拉森算法的实现思想 (1)用7个乘法和10个加(减)法来算出下面7个(n?2)?(n?2)矩阵。 (2)用8个加(减)法算出这些Cij。 复杂度分析 T(n)=?(nlog7) =?(n2.81)?较大的改进 * 传统方法

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档