算法设计与分析减治法.ppt

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

****************************************************一般取子数组的第一个元素为中轴元素。*********************************************************************字典生成顺序举例例n=3在{1,2,3}中按字典顺序选择:123132213231312321第32页,共63页,5月,星期六,2024年,5月*基本思想:从右到左扫描一个当前排列,寻找第一对连续的元素ai和ai+1,aiai+1ai+1及后面的元素什么特点?在ai+1及后面的元素中寻找大于ai的最小数字放到i的位置上ai,ai+1。an按升序从i+1位置排到n第33页,共63页,5月,星期六,2024年,5月*2、生成子集考虑如何用减一法生成规模为n的集合的所有子集?如何建立n规模和n-1规模的关系在n-1规模集合的所有子集中添加第n个元素第34页,共63页,5月,星期六,2024年,5月*减治法生成幂集例n=3方法:在n=2的幂集中加入元素3,在n=1的幂集中加入元素2在n=0的幂集中加入元素1??,{1}//n=1?,{1},{2},{1,2}//加入元素2?,{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}//加入元素3第35页,共63页,5月,星期六,2024年,5月*位串法生成幂集这是一个直接解决该问题的方法,可以对较小的集合生成幂集例n=3,元素为{a1,a2,a3}方法:每一个子集与一个3位二进制串b1b2b3对应,ai属于该子集时,bi=1,否则bi=0二进制串:000,001,010,011,100,101,110,111对应子集:?,{a3},{a2},{a2,a3},{a1},{a1,a3},{a1,a2},{a1,a2,a3}第36页,共63页,5月,星期六,2024年,5月*5.5减常因子法已有例子折半查找、用平方求幂注意:不要指望有许多这种类型的例子,因为这种算法的效率常常是对数的,速度非常快,并不会时常出现,不以2为因子化简的情况更是少之又少。第37页,共63页,5月,星期六,2024年,5月*1、假币问题有n个金币,其中一个是假币。这个假币的重量比真币的重量要轻一点,所有n-1个金币的重量是一样的。现在你有一架天平,设计高效的算法(用最少的使用天平次数)找出那个假的金币。考虑用蛮力法,如何解?时间效率类型是?减治法?可类比于折半查找。第38页,共63页,5月,星期六,2024年,5月*假币问题解法1、用减治法(减半)把n个硬币分为两堆,每堆?n/2?个,每次称一堆。请写出递推式易见W(1)=0W(n)=W(?n/2?)+1解得W(n)=?log2n?第39页,共63页,5月,星期六,2024年,5月*假币问题解法2、用减治法(减n/3)把n个硬币分为三堆,每堆?n/3?个,每次称任意二堆。易见W(1)=0W(n)=W(?n/3?)+a解得W(n)=?log3n?结果比减半法更好。是否分堆数越多越好?第40页,共63页,5月,星期六,2024年,5月*2、俄式乘法/俄国农民法非主流算法设n、m是整数,以n为实例规模的度量。若n为偶数,则n·m=(n/2)·2m若n为奇数,则n·m=((n-1)/2)·2m+m以1·m=m为算法停止的条件。第41页,共63页,5月,星期六,2024年,5月*俄国农民法举例:50×65nm分析

文档评论(0)

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

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

1亿VIP精品文档

相关文档