分治策略 part1.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文档。上传文档
查看更多
分治策略 part1

T(n)≤T(n/5)+T(3n/4)+O(n) 最坏时间复杂度 T(n)=O(n) 如果两个人同时对n个电影进行了喜爱程度的排名,如何比较两人对电影喜好是否一致呢 假设按照我对电影的喜爱程度给电影编号为1,2,…..,n,另外一个人对这n个电影的排序是a1,a2,…..,an,如果ij,但是aiaj,我们则称ij逆序,我们用两个序列的逆序个数来度量两个序列的相似度 2 1 4 2 1 3 6 4 5 5 3 6 穷举法:列举出所有可能,看一共出现了多少对逆序 暴力求解O(n2) 分解(Divide) 解决(Conquer) 合并(Combine) A: a1,a2, ……,am B: am+1,am+2, ……,an a1,a2, ……,an 如何找到ai属于A,aj属于B这样的(ai,aj)逆序 我们称为集合A与集合B的逆序数 A中的逆序个数 B中的逆序个数 2 5 1 6 4 3 A B 所谓集合A与集合B之间的逆序数,其实是集合B中每个元素相对于集合A的逆序数的总和 所谓集合B中某个元素aj与集合A之间的逆序数,其实是aj与集合A中能产生逆序的元素的个数 也就是说A中有几个元素比aj大 如何在进尽量短的时间内找出这个数目的总和 1 2 5 3 4 6 如果A和B中都已经排序过 1 2 相对于3来说,1 2都不构成逆序 3 相对于3来说,5构成逆序 相对于4来说,5构成逆序 4 5 6 将A和B中的元素进行归并排序时,如果选择B中元素的时候,A中还有元素,那么A中所剩的元素将和B中选取的这个元素构成逆序,所以当选取B中元素的时候,A中剩余几个元素,就会产生几个逆序,这样通过O(n)的时间就可以算出集合A与集合B的逆序数。 每次为了计算两个集合的逆序数都要将两个集合中的元素进行归并排序,计数作为排序的副产品。这样也可以为下一次的计算更大的集合的逆序数做好准备。 T(n) = 2T(n/2) +O(n) T(n) = O(nlgn) 问题:给出平面上n个点,找出距离最近的一对点。 暴力求解O(n2) 分解(Divide) 解决(Conquer) 合并(Combine) S1 S2 问题:给出直线上n个点,找出距离最近的一对点。 S1 S2 p1 q1 p2 q2 p3 q3 p4 q4 |p3-p2| |q3-q2| d = min{ |p3-p2| , |q3-q2| } m [m-d,m+d] [m-d,m)中至多有S1中一个点 (m, m+d]中至多有S2中一个点 找到p4和q1点所需的时间是O(n), 确定其中是否包含更近的点的时间是O(1) 合并的时间是O(n) T(n)=2T(n/2)+O(n) 时间复杂度O(nlgn) S1 S2 d1 d2 d = min{d1 , d2 } d d P1 P2 P1中与P2中的点对均构成最近点对的候选者,最多n2/4 P1 P2 p d d d 在P2中与p构成最近点对候选的点q应该满足dis(p,q)d 此区域中最多有6个点 总共需要检查n/2*6=3n个点对 确定筛选区域中的点 确定哪些点对需要检查 多个数相乘,其实也是分治策略 * 两边去对数 判断log(x)/x的单调性 求导为(1-lnx)/x^2 发现在[e,+无)单调递减 lne/elnpi/pi 因此e^pi大 * O只是说明上界 * 等号并不说明是 而是说明是他的上界或者下界 * * 演示对前k个数进行排序,然后后面的进行插入 * * 将f(n)与 相比 归并排序:T(n)=2T(n/2)+cn 二分搜索:T(n)=T(n/2)+c a=2,b=2,lgba=1,相当于case2中k=0 a=1,b=2,lgba=0,相当于case2中k=0 T(n)=Θ(nlgn) T(n)=Θ(lgn) 计算 an a*a*a*a*a*……..*a 时间复杂度O(n) T(n) = T(n/2) + O(1) T(n) = O(logn) 列昂纳多·斐波那契 意大利数学家 《珠算原理》:某人把一对兔子放入一个四面被高墙围住的地方。假设每对兔子每月能生下一对小兔,而每对新生小兔从第二个月开始又具备生育能力,请问:一年后应有多少对兔子 F0 = 0 F1 = 1 Fn = Fn - 1 + Fn - 2 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946,….. 20个月之后有10946对兔子 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181,

文档评论(0)

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

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

1亿VIP精品文档

相关文档