算法设计基本方法 (2).ppt
《算法设计基本方法 (2).ppt》由会员分享,可在线阅读,更多相关《算法设计基本方法 (2).ppt(43页珍藏版)》请在三一办公上搜索。
1、算法设计基本方法(1),列举法(穷举法):指的是从可能的解的集合中一一枚举各元素,用题目给定的检验条件判定哪些是无用的,哪些是有用的。能使命题成立,即为其解。例:百鸡问题(教材p6),特点:算法简单,可读性强,直观易于理解和设计适用范围:解决“是否存在”或者“有多少种可能”问题缺点:运算工作量巨大改进方法:分析实际问题,缩小列举范围以减少运算量软肋:不能用以解决列举量无限的问题,或列举量非常大的问题,算法设计基本方法(2),归纳法:通过分析少量特殊情况,找出关系,得到结论例:搏彩问题,这期彩票该买几呢?,根据曲线,买5比较好,归纳法,特点:适用面广,高效使用,常能解决许多实际问题适用范围:样本
2、空间有一定规律,多用于预测领域,数据难以获得的工程计算科学计算等领域缺点:归纳出的数学模型需要证明,且代码实现不规范改进方法:常采用不同归纳方法共同求解一个问题软肋:不能求解样本空间过于零散的问题,算法设计基本方法(3),递推从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果特点:采用递推关系式数学模型,理论正确性得到保证,由于递推关系式来源于归纳,所以本质上属于归纳法适用范围:数值计算等工程应用缺点:需考虑数值计算中稳定性问题,易产生蝴蝶效应软肋:无递推关系式的问题不可解,NY,BJ,递推,据说,美军 1910 年的一次部队的命令传递是这样的:营长对值班军官:明晚大约 8点钟左右,哈
3、雷彗星将可能在这个地区看到,这种彗星每隔 76年才能看见一次。命令所有士兵着野战服在操场上集合,我将向他们解释这一罕见的现象。如果下雨的话,就在礼堂集合,我为他们放一部有关彗星的影片。值班军官对连长:根据营长的命令,明晚8点哈雷彗星将在操场上空出现。如果下雨的话,就让士兵穿着野战服列队前往礼堂,这一罕见的现象将在那里出现。连长对排长:根据营长的命令,明晚8点,非凡的哈雷彗星将身穿野战服在礼堂中出现。如果操场上下雨,营长将下达另一个命令,这种命令每隔76年才会出现一次。排长对班长:明晚8点,营长将带着哈雷彗星在礼堂中出现,这是每隔 76年才有的事。如果下雨的话,营长将命令彗星穿上野战服到操场上去
4、。班长对士兵:在明晚8点下雨的时候,著名的76岁哈雷将军将在营长的陪同下身着野战服,开着他那“彗星”牌汽车,经过操场前往礼堂。,例:计算,公式一:,?,?,?!,!,What happened?!,注意此公式精确成立,考察第n步的误差,公式二:,注意此公式与公式一在理论上等价。,方法:先估计一个IN,再反推要求的In(n N)。,可取,取,考察反推一步的误差:,以此类推,对 n N 有:,误差逐步递减,这样的算法称为稳定的算法/*stable algorithm*/,类似例子见教材p8,算法设计基本方法(4),递归将一个复杂的问题归结为若干个较简单的问题,然后将这些较简单的每一个问再归结为更简
5、单的问题,这个过程可以一直做下去,直到最简单的问题为止。,例:计算阶乘:n!=n(n1)21,0!=1.,int factorial(int n)int i,result;result=1;if(n 0)for(i=1;i=n;i+)result=result*i;/*end if*/return result;,int factorial(int n)if(n 0)return n*factorial(n 1);else return 1;,例:斐波那契(Fibonacci)序列:F0=F1=1 Fi=Fi-1+Fi-2(i1)算法 求斐波那契数 int F(n)/返回第n个斐波那契数/in
6、t n;if(n=1)return(1);else return F(n-1)+F(n-2);算法效率:对F(n-1)、F(n-2)存在大量的重复计算改 进:保存中间结果,例:欧几里得算法 已知两个非负整数a和b,且ab0,求这两个数的最大公因数。辗转相除法:若b=0,则a和b的最大公因数等于a;若b0,则a和b的最大公因数等于b和用b除a的余数的最大公因数。算法 求最大公因数 GCD(int a,int b)/约定ab/if(b=0)return(a);else return(GCD(b,a%b);例:GCD(22,8)=GCD(8,6)=GCD(6,2)=GCD(2,0)=2;,递归,特点
7、:结构清晰,可读性强,容易用数学归纳法证明算法正确性适用范围:难以用循环或递推直观描述的复杂问题缺点:资源耗费多,执行效率低,所以在算法优化时采用消递归策略,算法设计基本方法(5),减半递推技术(分治法)所谓“减半”,是指将问题的规模减半,而问题的性质不变。所谓“递推”,是指重复“减半”的过程。,例:二分法求方程实根的减半递推过程(算法及程序见书p13)首先取给定区间的中点c(ab)/2。然后判断f(c)是否为0。若f(c)0,则说明c即为所求的根,求解过程结束;如果f(c)0,则根据以下原则将原区间减半:若f(a)f(c)0,则取原区间的前半部分;若f(b)f(c)0,则取原区间的后半部分。
8、最后判断减半后的区间长度是否已经很小:若|ab|,则过程结束,取(ab)/2为根的近似值;若|ab|,则重复上述的减半过程。,例 二分检索 二分检索:每次选取中间元素的下标,算法 二分检索Int BINSRCH(int A,int n,int x)int low,high,mid;low=1;high=n;while(lowAmid)low=mid+1;else return mid;return 0;,注:给定一个按非降次序排列的元素数组A(1:n),n1,判断x是否出现。若是,返回当前角标mid若非,返回0,表示没有找到,例:设A(1:9)=(-15,-6,0,7,9,23,54,82,1
9、01)在A中检索x=101,-14,82。执行轨迹见下表1,成功的检索,不成功的检索,成功的检索,递推减半技术,特点:迅速缩小计算规模适用范围:工程计算,矩阵计算,数值计算中能够迅速将问题分治的情况,算法设计基本方法(6),回溯法通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,对于每一步的试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再进行试探。例:八皇后问题(教材p15)迷宫问题实际上是一种图的深度优先遍历的方法特点:算法效率高,直观清楚适用范围:适用于解决“是否存在”或者“有多少种可能”问题缺点:算法的复杂性与计算顺序有关,算法分析,1.分析算法的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法设计基本方法 2 算法 设计 基本 方法
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6329418.html