引论-递归与分治分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
引论-递归与分治分析

* 算法设计与分析 递归与分治 选择 templateclassType Type Select(Type a[], int p, int r, int k ) { if (r-p75) { 用某个简单排序算法对数组a[p:r]排序; return a[p+k-1] }; for(int i=0;i=(r-p-4)/5; i++) //O(n) 将a[p+5*i]至a[p+5*i-4]的第3小元素 与a[p+i]交换位置; //找中位数的中位数, r-p-4即上面所说的n-5 Type x=Select(a, p, p+(r-p-4)/5, (r-p-4)/10); //T(n/5) int i=Partition(a,p,r,x), //O(n) j=i-p+1; if (k=j) return Select(a,p,i,k) //T(3n/4) else return Select(a,i+1,r,k-j) } 最坏情况下的选择算法: 算法分析: T(n)= 可得: T(n)=O(n) c1 n75 c2n+T(n/5)+T(3n/4) 定理:若r=5且a中元素互不相同,则 n75时, max{ |left|,|right| }=3n/4 * 算法设计与分析 递归与分治 选择 T(n)= c1 n75 c2n+T(n/5)+T(3n/4) T(n)=c2n+T(an)+T(bn) = c2n+[c2an+T(a2n)+T(abn)]+[c2bn+T(abn)+T(b2n)] =[c2n+ c2(a+b)n]+[T(a2n)+2T(abn)+T(b2n)] =[c2n+ c2(a+b)n+ c2(a+b)2n]+[T(a3n)+3T(a2bn)++3T(ab2n)+T(b3n)] … =[c2n+ c2(a+b)n+ c2(a+b)2n+…+ c2(a+b)k-1n]+ [Ck0T(akn)+Ck1T(ak-1bn)+…+Ckk-1T(abk-1n)+CkkT(bkn)], q=a+b1 =c2[(1-qk)/(1-q)]n+R 设n在较小的范围内, nN, T(n)满足线性关系: T(n)Cn, 因此,当(a+b)knN时, 有aibjnN, T(aibjn)Caibjn, 所以 RC(a+b)kn Cn, 因此, T(n) c2[1/(1-q)]n+C=O(n). * 算法思路: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) 算法设计与分析 递归与分治 * 2d/3 d/2 如果多于6点,必有一矩形d/2x2d/3内有两个点 此两点的距离=其对角线d, 矛盾.不是 为了使得知道,哪6点需要比较检查,将P2中点预先投影到Y轴上,然后一次性排序, O(nlogn) 所以, 对于P1中一点,第4步时间单位是6,共为6n=O(n), 所以, 总的计算时间仍然是O(nlogn). 为什么是 T(n)= 2T(n/2)+O(n) ? * 算法设计与分析 递归与分治 最接近点对问题 考察图中的14个点(d,m ?S1,g?S2)S1中的最近点对为(b,h)其距离约为0.316. S2中最近点对(f,j), 其距离为0.3

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档