- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013秋期-算法设计与分析-第二章.ppt
第二章 分治法 —— “分”而治之;通常,子问题与原始问题“同质”;例[找伪币] 假设16 枚金币中有一枚是伪造的,真假金币的区别仅是重量不同(伪币轻一些),利用一个没有砝码的天平作工具,找出这枚伪造的金币。 ;算法2.1 分治策略的抽象化控制
procedure DANDC(p,q)
global n.A(1:n);
integer m,p,q; //1≤p≤q≤n//
if SMALL(p,q)
then return(G(p,q))
else
m←DIVIDE(p,q) //p≤m<q//
return(COMBINE(DANDC(p,m),
DANDC(m+1,q)))
endif
end DANDC
; DANDC的计算时间
若所分成的两个子问题的输入规模大致相等,则DANDC总的计算时间可用递归关系式表示,如下:
g(n) n足够小
T(n) =
2T(n/2) + f(n) 否则
注:
T(n):表示输入规模为n的DANDC计算时间
g(n):表示对足够小的输入规模直接求解的计算时间
f(n):表示COMBINE对两个子区间的子结果进行合并
的时间
(该公式针对具体问题有各种不同的变形);2.2 二分检索(折半查找);分治求解策略分析:
定义问题的形式描述:I=(n, a1, a2, …,an,x)
问题分解:选取下标k,由此将I分解为3个子问题:
I1=(k-1, a1, a2, …,ak-1,x)
I2=(1, ak, x)
I3=(n-k, ak+1, a2, …,an,x)
对于I2,若ak=x,则有解k,对I1、I3不用再求解;否则,
若xak,则只在I1中求解,对I3不用求解;
若xak,则只在I3中求解,对I1不用求解;
I1 、I3上的求解可再次采用分治方法划分后求解(递归过程);2. 二分检索算法;例2.1:设A(1:9)=(-15,-6,0,7,9,23,54,82,101)
在A中检索x=101,-14,82。执行轨迹见下表1;3. 算法的正确性证明
定理2.1 过程BINSRCH(A,n,x,j)能正确运行
证明:
1)在具体指定A中的数据元素及x的数据类型后,算法中的所有运算都
能按要求正确运行——即首先满足确定性和能行性
2)终止性
算法初始部分置low←1, high←n
① 若n=0,不进入循环,j置0,算法终止
② 否则,进入循环,计算mid,
或 x=A(mid),j置为mid,算法终止;
或xA(mid),置high←mid-1,搜索范围实际缩小为[low, mid-1],
进入下次循环,对[mid+1, high]区间不做进一步搜索;
或xA(mid),置low←mid+1,进入下次循环;搜索范围实际缩小
为[mid+1, high],对[low, mid-1]区间不做进一步搜索;
因low, high, mid都是整型变量,故按照上述规则,在有限步内,或找到某个mid,有A(mid) = x;或变得lowhigh,在A中没有找到任何元素等于x,算法终止。;4. 性能分析;实例分析(例2.1);
成功检索
最好:1次
最坏:4次
平均:(3+2+3+4+1+3+2+3+4)/9≈2.77次
不成功检索
最好:3次
最坏:4次
平均:(3+3+3+4+4+3+3+3+4+4)/10 = 3.4次;二元比较树;基于二元比较树的分析
若x在A中出现,则算法的执行过程在一个圆形的内结点处结束。
若x不在A中出现,则算法的执行过程在一个方形的外结点处结束
——外结点不代表元素的比较,因为比较过程在该外结点的上一级的内结点处结束。
原创力文档


文档评论(0)