第2章 递归与分治策略-2.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文档。上传文档
查看更多
第2章 递归与分治策略-2

* 算法思路:1) n较小时直接求(n=2). 2) 将S上的n个点分成大致相等的2个子集S1和S2 3) 分别求S1和S2中的最接近点对 * 4) 求一点在S1、另一点在S2中的最近点对 5) 从上述三对点中找距离最近的一对. 问题描述:给定平面S上n个点,找其中的一对点,使得在n(n-1)/2个点对 中, 该点对的距离最小。 2.10、最接近点对问题 * 4)设 d=min{d1,d2}, d1,d2分别为s1,s2中最近点对的距离, 设p1,p2分别为分割线l左右宽为d的垂直长条区域,若第三个最近 点对d 必在p1和p2中。对?p?p1, 检查p2中满足p.y-dq.yp.y+d 的点q, 看是否与p的距离小于d. ? ? ? ? ? ? ? ? ? p1 p2 ? ? ? ? l p ? 2d 2d ? ? ? ? ? ? p的比较区,最多含6个点 分析: T(n)= O(1) T(n)= 2T(n/2)+O(n) 得: T(n)=O(nlogn) 算法设计与分析 递归与分治 * 算法设计与分析 递归与分治 最接近点对问题 考察图中的14个点(d,m ?s1,g?s2)s1中的最近点对为(b,h)其距离约为0.316. s2中最近点对(f,j), 其距离为0.3, 因此d=0.3.考察是否存在第三类点,p1={d, i, m},p2={g, l) 。i的比较区中仅含点l。计算i和l的距离,发现它小于d,因此(i,l)是最近的点对。 例 题 0.316 0.3 * 将P划分为子问题 P1,P2,…Pk * * * * 排序有很多算法,是人们研究最多的问题,据调查25%的机器时间都是在排序,排序不仅限于对数据的排序,广泛用于网络路由选择,图形图像处理,数字信号处理等等,在后面的很多内容里会看到它是很基本算法 1.一种可是把前面n-1个元素放到子集A,最后一个元素放到 子集B, 对A递归排序。由于B仅含一个元素,所以它已经排序完毕,将b中元素插入a中即可这种排序算法实际上就是插入排序的递归算法.O(n2) 2.先找出最大值放入b,其余n-1个元素放到子集A, 对A递归排序。将b中元素加入a中即可若用找最大元,这种排序算法实际上就是选择排序的递归算法.O(n2) 3.若用冒泡法寻找最大值并移到最后。这种排序算法实际上就是冒泡排序的递归算法.O(n2) 此算法中的递归只是简单的分割数组直到元素序列长为1,然后长为1的序列归并求为长为2的序列,为4的... * 归并过程o(n):每次比较排好一个. 迭代求解递归方程 最好最坏都是o(nlogn),故平均也是 * 归并过程o(n):每次比较排好一个. 迭代求解递归方程 最好最坏都是o(nlogn),故平均也是 * 归并过程o(n):每次比较排好一个. 迭代求解递归方程 最好最坏都是o(nlogn),故平均也是 * 由于对a[p:q-1]和a[q+1:r)的排序是原地进行的, 所以 a[p:q-1]和a[q+1:r]都已排好的序后不需要执行任何计算] 就已排好序。 第一次正确分割应该为[5,4,1,7,6,8,11,9](幻灯片上的为错误) * 由于对a[p:q-1]和a[q+1:r)的排序是原地进行的, 所以 a[p:q-1]和a[q+1:r]都已排好的序后不需要执行任何计算] 就已排好序。 最坏情况:划分总是在1,n-1,有一个子集为空 最好情况:划分总是在n/2 平均在O(nlogn)是基于比较排序中最快的, * 由于对a[p:q-1]和a[q+1:r)的排序是原地进行的, 所以 a[p:q-1]和a[q+1:r]都已排好的序后不需要执行任何计算] 就已排好序。 最坏情况:划分总是在1,n-1,有一个子集为空 最好情况:划分总是在n/2 平均在O(nlogn)是基于比较排序中最快的, * 比较排序,分配排序(散列) * * * 当数组排序后,第k小元素就是a[k].找最小元素和最大元素和中位元是最常见的应用. 可用归并或快速排序,所以算法显然可以在O(nlogn)时间完成 但最坏为n2阶(支点极端), 但我们知道找最大,小元也可不排序,可在o(n)完成,事实上找k小元素也可可在o(n)完成 如中间工资, 中间年龄, 中间重量。其他k值也是有用的。例如,

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档