《算法设计与分析》复习题.doc

上传人:wux****ua 文档编号:9003874 上传时间:2020-04-02 格式:DOC 页数:9 大小:144.01KB
返回 下载 相关 举报
《算法设计与分析》复习题.doc_第1页
第1页 / 共9页
《算法设计与分析》复习题.doc_第2页
第2页 / 共9页
《算法设计与分析》复习题.doc_第3页
第3页 / 共9页
点击查看更多>>
资源描述
填空1直接或间接地调用自身的算法称为 递归 。2算法的复杂性是 算法效率 的度量,是评价算法优劣的重要依据。3以广度优先或以最小耗费方式搜索问题解的算法称为 分支限界法 。4回溯法解题的显著特点是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为 o(h(n) 。5人们通常将问题的解决方案分为两大类:一类是可以通过执行若干个步骤就能得出问题结论的,叫做 算法方案 方案;另一类是不能通过若干个步骤直截了当地得出结论,而是需要反复验证才能解决的,叫做 启发式方案 方案。6算法就是一组有穷的 规则 ,它们规定了解决某一特定类型问题的 一系列运算 。7在进行问题的计算复杂性分析之前,首先必须建立求解问题所用的计算模型。3个基本计算模型是 随机存取机、 随机存取存储程序机 、 图灵机 。8快速排序算法的性能取决于 划分的对称性 。9计算机的资源最重要的是 内存 和 运算 资源。因而,算法的复杂性有时间 和 空间 之分。10贪心算法总是做出在当前看来 最优 的选择。也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的 局部最优解 。11许多可以用贪心算法求解的问题一般具有2个重要的性质: 最优子结构的 性质和 贪心选择的 性质。12常见的两种分支限界法为 队列式 和 优先队列式 。13解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中需要排序的是 回溯法 ,不需要排序的是 动态规划和分支限界法 。14f ( n ) = 6 2n + n2,f(n)的渐进性态f ( n ) = O ( 2n )。15对于含有n个元素的排列树问题,最好情况下计算时间复杂性为 ,最坏情况下计算时间复杂性为 n! 。16在忽略常数因子的情况下,O、和三个符号中, 提供了算法运行时间的一个上界。17回溯法的求解过程,即在问题的解空间树中,按 深度优先 策略从根结点出发搜索解空间树。18分支限界法的求解过程,即在问题的解空间树中,按 广度优先 策略从根结点出发搜索解空间树。19多项式的上界为 2n 。20用分支限界法解布线问题时,对空间树搜索结束的标志是 活结点表为空 。21使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是 0-1背包 ,只使用约束条件进行裁剪的是 N皇后 。简答1. 算法分析的目的是什么?分析算的的效率以求改进2. 算法的渐进时间复杂性的含义?当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是实用时间复杂度相差的常熟倍,因此可以用T(n)的数量级(阶)评价算法。时间复杂度T(n)的数量级(阶)称为渐进时间复杂性3. 最坏情况下的时间复杂性和平均时间复杂性有什么不同?最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n)=maxT(n,I),IDn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n)=P(I)T(n,I)IDn4. 简述分治法的基本思想。分治法的是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原题相同5. 简述动态规划方法所运用的最优化原理。“最优化原理”用数学化的语言来描述:假设为了解决某一优化问题,需要依次作出n个决策D1,D2,Dn,如若这个决策序列是最优的,对于任何一个整数k,1kn,不论前面k个决策是怎样的,以后的最优决策只取决于由前面决策所确定的当前状态,即以后的决策Dk+1,Dk+2,Dn也是最优的。6. 简述最优子结构性质。一道动态规划问题其实就是一个递推问题,假设当前决策结果是fn,则最优子结构就是要让fn-k最优,最优子结构性质就是能让转移到n的状态是最优的,并且与后面的决策没有关系,即让后面的决策安心地使用前面的局部最优解的一种性质7. 简述回溯法基本思想。回溯法的基本做法是搜索,在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。8. 用回溯法求解的问题,其解如何表示?有什么规定?问题的解可以表示为n元组:(x1,x2,xn),xiSi,Si为有穷集合,xiSi,(x1,x2,xn)具备完备性,即(x1,x2,xn)是合理的,则(x1,x2,xi)(in)一定合理。9. 回溯法的搜索特点是什么?在解空间树上跳跃式地深度优先搜索,即用判定函数考察xk的取值,如果xk是合理的就搜索xk为根节点的子树,如果xk取完了所有的值,便回溯到xk-1。10. 贪心算法的基本思想?是一种依据最优化量度依次选择输入的分级处理方法。基本思路是:首先根据题意,选取一种量度标准;然后按这种量度标准对这n个输入排序,依次选择输入量加入部分解中。如果当前这个输入量的加入,不满足约束条件,则不把此输入加到这部分解中。11. 什么是直接递归和间接递归?消除递归一般要用到什么数据结构?在定义一个过程或者函数的时候又出现了调用本过程或者函数的成分,既调用它自己本身,这称为直接递归。如果过程或者函数P调用过程或者函数Q,Q又调用P,这个称为间接递归。消除递归一般要用到栈这种数据结构。算法填空1n后问题回溯算法(1)用二维数组ANN存储皇后位置,若第i行第j列放有皇后,则Aij为非0值,否则值为0。(2)分别用一维数组MN、L2*N-1、R2*N-1表示竖列、左斜线、右斜线是否放有棋子,有则值为1,否则值为0。for ( j=0; j=0; r- )/自底向上递归计算for ( c=0; ; c+ ) if ( tr+1c tr+1c+1 ) ;else ;3用回溯法解0/1背包问题时,计算结点的上界的函数如下所示,请在空格中填入合适的内容:private static double bound ( int i )double cleft = c - cw; / 剩余容量double bound = cp; / 结点的上界while (i = n & wi = cleft) cleft-=wi ; bound+=pi ; i+ ; if (i = n) bound+=pi*cleft/wi ;return bound;4用回溯法解图的m着色问题时,使用下面的函数OK检查当前扩展结点的每一个儿子所相应的颜色的可用性,则需耗时(渐进时间上限) 。private static boolean ok( int k )/ 检查颜色可用性 for(int j=1;j=n;j+)if( akj & xj=xk ) return false;return true;5Hanoi算法Hanoi ( n, a, b, c )if ( n=1 ) move(a,c) ;else Hanoi(n-1,a,c,b) ; Move(a,c) ;Hanoi ( n-1, b, a, c );算法应用1给定多项式p(x) = anxn + an-1xn-1 + + a1x + a0,假设使用以下方法求解:p = a0;xpower = 1;for ( i=1; i=n; i+ )xpower = x * xpower;p = p + ai * xpower;(1)该算法最坏情况下使用的加法和乘法分别为多少次?(2)能不能对算法的性能进行提高?如果可以,请写出改进算法。(1)该算法最坏情况下使用的加法n次,乘法2n次(2)改进的算法为:floatHorner(A,floatx)p=An+1;for(j=1;j=n;j+)p=x*p+An-j;returnp;该算法中使用加法n次,乘法n次2假设有7个物品,它们的重量和价值如下表所示。若这些物品均不能被分割,且背包容量M150,使用回溯方法求解此背包问题。请写出状态空间搜索树。物品ABCDEFG重量35306050401025价值104030503540303已知在如下所示的电路板中,阴影部分是已作了封锁标记的方格,请按照队列式分支限界法在图中确定a到b的最短布线方案,要求布线时只能沿直线或直角进行,在图中标出求得最优解时各方格情况。ba4设有n=2k个运动员要进行循环赛,现设计一个满足以下要求的比赛日程表: 每个选手必须与其他n-1名选手比赛各一次; 每个选手一天至多只能赛一次; 循环赛要在最短时间内完成。(1)如果n=2k,循环赛最少需要进行多少天; 如果n2k,循环赛最少需要进行多少天。(2)当n=23=8时,请画出循环赛日程表:5已知,k=1,2,3,4,5,6,r1=5,r2=10,r3=3,r4=12,r5=5,r6=50,r7=6,求矩阵链积A1A2A3A4A5A6的最佳求积顺序。使用 算法进行求解。最优值数组为: 123456123456最优断开位置数组为:123456123456因此,最佳乘积序列为 。共执行乘法 次。6棋盘覆盖问题。(1)将下图特殊棋盘进行L型骨牌填充。(2)算法时间复杂性。7用分支限界法解装载问题时,对算法进行了一些改进,下面的程序段给出了改进部分。试说明划线部分完成什么功能,以及这样做的原因,即采用这样的方式,算法在执行上有什么不同。 / 检查左儿子结点 int wt = ew + wi; / 左儿子结点的重量 if ( wt bestw ) bestw = wt ; / 加入活结点队列 if ( i bestw & i n ) queue.put( new Integer( wt ) ); / 可能含最优解 ew=( ( Integer )queue.remove( ) ).intValue( ); / 取下一扩展结点8单源最短路径的求解。给定带权有向图(如下图所示)G = ( V,E ),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到所有其它各顶点的最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。请用Dijkstra算法计算从源顶点1到其它顶点间最短路径。请将此过程填入下表中。432110030maxint10-1初始dist5dist4dist3dist2uS迭代算法设计1用分治算法求给定二叉树的高度。2用合适算法求解装载问题。3用贪心法求解部分背包问题,已知n=3,C=40,(w1,w2,w3)=(28,15,24),(p1,p2,p3)=(35,25,24)。4给定a,用二分法设计出求an的算法。5用回溯法求解 1,2,3,4,5 ,这5个自然数中任取3个数的组合。第 9 页 共 9 页
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!