《分治策略朱全民》PPT课件

《分治策略朱全民》PPT课件

ID:36791849

大小:1.04 MB

页数:48页

时间:2019-05-10

《分治策略朱全民》PPT课件_第1页
《分治策略朱全民》PPT课件_第2页
《分治策略朱全民》PPT课件_第3页
《分治策略朱全民》PPT课件_第4页
《分治策略朱全民》PPT课件_第5页
资源描述:

《《分治策略朱全民》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、分治算法教案长沙市雅礼中学朱全民问题1:找出伪币给你一个装有16枚硬币的袋子。16枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。为了帮助你完成这一任务,将提供一台可用来比较两组硬币重量的仪器,比如天平。利用这台仪器,可以知道两组硬币的重量是否相同。方法1任意取1枚硬币,与其他硬币进行比较,若发现轻者,这那枚为伪币。最多可能有15次比较。方法2将硬币分为8组,每组2个,每组比较一次,若发现轻的,则为伪币。最多可能有8次比较。方法3分析上述三种方法,分别需要比较

2、15次,8次,4次,那么形成比较次数差异的根本原因在哪里?方法1:每枚硬币都至少进行了一次比较,而有一枚硬币进行了15次比较方法2:每一枚硬币只进行了一次比较方法3:将硬币分为两组后一次比较可以将硬币的范围缩小到了原来的一半,这样充分地利用了只有1枚伪币的基本性质。问题2:金块问题有一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比

3、第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重量的仪器,我们希望用最少的比较次数找出最轻和最重的金块。方法1假设袋中有n个金块。可以用函数Max通过n-1次比较找到最重的金块。找到最重的金块后,可以从余下的n-1个金块中用类似的方法通过n-2次比较找出最轻的金块。这样,比较的总次数为2n-3。算法如下:max:=a[1];min:=a[1];fori:=2tondo{2n-2次比较}beginifa[i]>maxthenmax:=a[i];

4、ifa[i]maxthenbeginmax:=a[i];j:=iend;fori:=j+1tondoa[i-1]:=a[i];{去掉最大的数a[j]}min:=a[1];fori:=2ton-1do{n-2次比较,从剩下的元素中找最小的}ifa[i]>maxthenmin:=a[i];找金块的示例图方法2:n≤2,识别出最重和最轻的金块,一次比较

5、就足够了。n>2,第一步,把这袋金块平分成两个小袋A和B。第二步,分别找出在A和B中最重和最轻的金块。设A中最重和最轻的金块分别为HA与LA,以此类推,B中最重和最轻的金块分别为HB和LB。第三步,通过比较HA和HB,可以找到所有金块中最重的;通过比较LA和LB,可以找到所有金块中最轻的。在第二步中,若n>2,则递归地应用分而治之方法。分治过程比较过程分析从图例可以看出,当有8个金块的时候,方法1需要比较15~16次,方法2只需要比较10次,那么形成比较次数差异的根本原因在哪里?其原因在于方法2对金块实

6、行了分组比较。对于N枚金块,我们可以推出比较次数的公式:假设n是2的次幂,c(n)为所需要的比较次数。方法1:c(n)=2n-1方法2:c(n)=2c(n/2)+2。由c(2)=1,使用迭代方法可知c(n)=3n/2-2。在本例中,使用方法2比方法1少用了25%的比较次数。证明令n=2kC(2K)=2C(2K-1)+2=2[2C(2K-2)+2]+2=22+2+22C(2K-2)=22+2+2[2C(2K-3)+2]=23+22+2+23C(2K-3)……=2K-1+2K-2+…+2+2K-1C(2)=

7、2K-1+2K-2+…+2+2K-1=2K-2+2K-1C(n)=3n/2-2分治思想分治(divide-and-conquer)就是“分而治之”的意思,其实质就是将原问题分成n个规模较小而结构与原问题相似的子问题;然后递归地解这些子问题,最后合并其结果就得到原问题的解。当n=2时的分治法又称二分法。其三个步骤如下;分解(Divide):将原问题分成一系列子问题。解决(Conquer):递归地解各子问题。若子问题足够小,则可直接求解。合并(combine);将子问题的结果合并成原问题的解。分治思想问题S

8、问题S问题SS的解问题S1……问题S2问题Si问题Sn……S1的解……S2的解Si的解Sn的解……问题的分解子集解的合并子问题求解分治思想由分治法所得到的子问题与原问题具有相同的类型。如果得到的子问题相对来说还太大,则可反复使用分治策略将这些子问题分成更小的同类型子问题,直至产生出不用进一步细分就可求解的子问题。分治求解可用一个递归过程来表示。要使分治算法效率高,关键在于如何分割?一般地,出于一种平衡原则,总是把大问题分成K个规模尽可能相等

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。