用分治法解决问题课件_第1页
用分治法解决问题课件_第2页
用分治法解决问题课件_第3页
用分治法解决问题课件_第4页
用分治法解决问题课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分治策略解决问题问题1:找出伪币一个装有16枚硬币的袋子,16枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻一些。你的任务是找出这枚伪造的硬币。为了帮助你完成这一任务,将提供一台可用来比较两组硬币重量的仪器,比如天平。利用这台仪器,可以知道两组硬币的重量是否相同。方法1任意取1枚硬币,与其他硬币进行比较,若发现轻者,这那枚为伪币。最多可能有15次比较。方法3分析上述三种方法,分别需要比较18次,8次,4次,那么形成比较次数差异的根据原因在哪里?方法1:每枚硬币都至少进行了一次比较,而有一枚硬币进行了15次比较方法2:每一枚硬币只进行了一次比较方法3:将硬币分为两组后一次比较可以将硬币的范围缩小到了原来的一半,这样充分地利用了只有1枚伪币的基本性质。问题2:金块问题有一个老板有一袋金块。每个月将有两名雇员会因其优异的表现分别被奖励一个金块。按规矩,排名第一的雇员将得到袋中最重的金块,排名第二的雇员将得到袋中最轻的金块。根据这种方式,除非有新的金块加入袋中,否则第一名雇员所得到的金块总是比第二名雇员所得到的金块重。如果有新的金块周期性的加入袋中,则每个月都必须找出最轻和最重的金块。假设有一台比较重量的仪器,我们希望用最少的比较次数找出最轻和最重的金块。方法1假设袋中有n个金块。可以用函数Max通过n-1次比较找到最重的金块。找到最重的金块后,可以从余下的n-1个金块中用类似的方法通过n-2次比较找出最轻的金块。这样,比较的总次数为2n-3。算法如下:intmax=a[1],min=a[1],i;for(i=2;i<=n;i++){if(a[i]>max){max=a[i];}if(a[i]<min){min=a[i];}}找金块的示例图分治过程分析从图例可以看出,当有8个金块的时候,方法1需要比较15-16次,方法2只需要比较10次,那么形成比较次数差异的根据原因在哪里?其根本原因在于方法2对金块实行了分组比较。对于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等份。对每一等份分别进行解决后,原问题就可以很快得以解决。因此一个问题能否用分治法解决,关键是看该问题是否能将原问题分成n个规模较小而结构与原问题相似的子问题。递归的解决这些子问题,然后合并其结果就得到原问题的解。当n=2时的分治法又称二分法。1.该问题的规模缩小到一定的程度就可以容易地解决;

2.该问题可以分解为若干个规模较小且基本相同的子问题。3.利用该问题分解出的子问题的解可以合并为该问题的解;分治法所能解决的问题具有以下几个特征:基本步骤一般分为三步递归进行1.分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;2.解决:若子问题规模较小而容易被解决则直接求解,否则递归地解各个子问题;3.合并:将该层递归各个子问题的解合并为原问题的解。分治策略的解题思路

if(问题不可分){直接求解;返回问题的解;} else{对原问题进行分治;递归对每一个分治的部分求解归并整个问题,得出全问题的解;}分析如果精确到小数点后两位,可用简单的枚举法:将x从-100.00到100.00(步长0.01)逐一枚举,得到20000个f(x),取其值与0最接近的三个f(x),对应的x即为答案。而题目已改成精度为小数点后4位,枚举算法时间复杂度将达不到要求。直接使用求根公式,极为复杂。加上本题的提示给我们以启迪:采用二分法逐渐缩小根的范围,从而得到根的某精度的数值分析

当已知区间(a,b)内有一个根时,用二分法求根,若区间(a,b)内有根,则必有f(a)*f(b)<0。重复执行如下的过程:(1)若a+0.0001>b或f((a+b)/2)=0,则可确定根为(a+b)/2并退出过程;(2)若f(a)*f((a+b)/2)<0,则由题目给出的定理可知根在区间(a,(a+b)/2)中,故对区间重复

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论