递归算法的优缺点.doc

上传人:cl****1 文档编号:563783386 上传时间:2022-08-21 格式:DOC 页数:8 大小:72.74KB
返回 下载 相关 举报
递归算法的优缺点.doc_第1页
第1页 / 共8页
递归算法的优缺点.doc_第2页
第2页 / 共8页
递归算法的优缺点.doc_第3页
第3页 / 共8页
递归算法的优缺点.doc_第4页
第4页 / 共8页
递归算法的优缺点.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《递归算法的优缺点.doc》由会员分享,可在线阅读,更多相关《递归算法的优缺点.doc(8页珍藏版)》请在金锄头文库上搜索。

1、递归算法的优缺点:优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。边界条件与递归方程是递归函数的二个要素应用分治法的两个前提是问题的可分性和解的可归并性以比较为基础的排序算法的最坏倩况时间复杂性下界为0(nlog2n)。回溯法以深度优先的方式搜索解空间树T,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树T。舍伍德算法设计的基本思想:设A是一个确定性算法,当它的输入实例为x时所需的计算时间记为tA(x)。设Xn是算法A的输入规模为n的实例的

2、全体,则当问题的输入规模为n时,算法A所需的平均时间为这显然不能排除存在xXn使得 的可能性。希望获得一个随机化算法B,使得对问题的输入规模为n的每一个实例均有拉斯维加斯( Las Vegas )算法的基本思想:设p(x)是对输入x调用拉斯维加斯算法获得问题的一个解的概率。一个正确的拉斯维加斯算法应该对所有输入x均有p(x)0。设t(x)是算法obstinate找到具体实例x的一个解所需的平均时间 ,s(x)和e(x)分别是算法对于具体实例x求解成功或求解失败所需的平均时间,则有:解此方程可得: 蒙特卡罗(Monte Carlo)算法的基本思想:设p是一个实数,且1/2p1。如果一个蒙特卡罗算

3、法对于问题的任一实例得到正确解的概率不小于p,则称该蒙特卡罗算法是p正确的,且称p-1/2是该算法的优势。如果对于同一实例,蒙特卡罗算法不会给出2个不同的正确解答,则称该蒙特卡罗算法是一致的。线性规划基本定理:如果线性规划问题有最优解,则必有一基本可行最优解。单纯形算法的特点是:(1)只对约束条件的若干组合进行测试,测试的每一步都使目标函数的值增加;(2)一般经过不大于m或n次迭代就可求得最优解。单纯形算法的基本思想就是从一个基本可行解出发,进行一系列的基本可行解的变换。每次变换将一个非基本变量与一个基本变量互调位置,且保持当前的线性规划问题是一个与原问题完全等价的标准线性规划问题。图灵机由以

4、下几部分组成:一条无限长的带(有无穷个格子)、一个读写头、一个有限状态控制器以及一个程序。NPC形式化定义:定义1:语言L是NP完全的当且仅当(1) L【NP;(2)对于所有L【NP有L pL。 如果有一个语言L满足上述性质(2),但不一定满足性质(1),则称该语言是NP难的。所有NP完全语言构成的语言类称为NP完全语言类,就是NPC。定理1 设L是NP完全的,则(1)LP当且仅当PNP;(2)若 L p L1,且 L1 NP,则L1是NP完全的。团问题: 任给图G和整数k试判定图G中是否存在具有k个顶点的团? 1)团问题NP。显然,验证G的一个子图是否成团只需多项式时间即可。 2)SAT团问

5、题。 任给表达式f构造一个相应的图G如下:图G的每个顶点对应于f中的每个文字(多次出现的重复计算)。若G中两个顶点其原对应的文字不相互补且不出现于同一于句中,则将其连线。 设f有n个子句,则f可满足当且仅当f对应的图G中有n个顶点的团。 这是因为:(a) 若f可满足,即有某种赋值使得f取值为真,它等价于使得每个ci中都至少有一个文字为真,这n个文字(每个ci(1in)中一个)对应的图G中的n个顶点就构成一个团。(b)若图G中有一n个顶点的团,则取给出使得这n个顶点对应的文字都为真的赋值,则f的取值为真(这由图G的定义易证)。显见,上述构造图G的方法是多项式界的,因此SAT 团问题。由(a)、(

6、b)有,团问题NPC。证毕。单源最短路径问题:void shortestpaths(v) MinHeap H1000; /定义最小堆MinHeapNode E;E.i=v;E.length=0;Distv=0;/搜索问题界空间while(true) for(j=1;j=n;j+)if(cE.ijinf)& (E.length+cE.ijdistj) distj=E.length+cE.ij; prevj=E.i; /加入活结点优先队列 MinHeapNode N;N.i=j; N.length=distj; H.Insert(N); /取下一个扩展结点 try H.DeleteMin(E);

7、/优先队列为空 catch (OutOfBounds) break;(1)数值随机化算法: 求解数值问题,得到近似解(2)Monte Carlo算法: 问题准确性,但却无法确定解正确性(3)Las Vegas算法:获得正确解,但存在找不到解的可能性(4)Sherwood算法:保证能获得正确解旅行售货员问题:(优先队列式分支限界法) Type Travding (int v) MinHeapNode H(1000); Type MinoutN+1; /计算 Minouti=顶点 i的最小出边费用 Type Minsurn=0;/最小出边费用和for(i=1;in;i+) Min=NoEdge;

8、for( j=1;jn;j+) if(aij!=NoEdge(aijMin | Min=NoEdge) Min=aij; if(Min=NoEdge) return(NoEdge); /无回路 MinOuti= Min; MinSum+=Min; /初始化 MinHeapNode E; for(i= 0;i n;i+) E.xi= i+ 1; E.s=0; E.cc=0; E.rcost=MinSum; Bestc=NoEdge; while(E.sn-1) /非叶结点if(E.sn-1) /当前扩展结点是叶结点的父结点 if(aE.xn-2E.xn-1!=NoEdge aE.xn-21!=N

9、oEdge&(E.cc+aE.xn-2E.xn-1+aE.xn-11 n) for (int j = 1; j = n; j+) bestxj = xj; bestf = f; else for (int j = i; j f1)?f2i-1:f1)+Mxj2; f+=f2i; if (f bestf) Swap(xi, xj); Backtrack(i+1); Swap(xi, xj); f1- =Mxj1; f- =f2i; 所以在最坏的情况下,整个算法的计算时间复杂性为O(n!)回溯算法解0-1背包问题(解空间:子集树):templateTypep Knap:Bound(int i)/ 计算上界 Typew cleft = c - cw; / 剩余容量 Typep b = cp; / 以物品单位重量价值递减序装入物品 while (i = n & wi = cleft) cleft -= wi; b += pi; i+; / 装满背包 if (i n )

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号