《算法设计与分析》复习题_第1页
《算法设计与分析》复习题_第2页
《算法设计与分析》复习题_第3页
《算法设计与分析》复习题_第4页
《算法设计与分析》复习题_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、填空1 .直接或间接地调用自身的算法称为递归。2 .算法的复杂性是 算法效率 的度量,是评价算法优劣的重要依据。3 .以广度优先或以最小耗费方式搜索问题解的算法称为分支限界法。4 .回溯法解题的显著特点是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为o(h(n)。5 .人们通常将问题的解决方案分为两大类:一类是可以通过执行若干个步骤就能得出问题结论的,叫做 _算法方案_方案;另一类是不能通过若干个步骤直截了当地得出结论,而是需要反复验证才能解决的,叫做 启发式方案匚方案

2、。6 .算法就是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算。7 .在进行问题的计算复杂性分析之前,首先必须建立求解问题所用的计算模型。3个基本计算模型是随机存取机、随机存取存储程序机、图灵机 。8 .快速排序算法的性能取决于划分的对称性 。9 .计算机的资源最重要的是内存 和运算 资源。因而,算法的复杂性有时间和.空间 之分。10 .贪心算法总是做出在当前看来最优 的诜择。也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的局部最优解。11 .许多可以用贪心算法求解的问题一般具有2个重要的性质:最优子结构的性质和贪心选择的性质。12 .常见的两种分支限界法为 队

3、列式和 优先队列式。13 .解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中需要排序的是回溯法,不需要排序的是动态规划和分支限界法。14 . f ( n ) = 6 2n+ n2, f(n)的渐进性态 f ( n ) = O ( 2M)。15 .对于含有n个元素的排列树问题,最好情况下计算时间复杂性为 ,最坏情况 下计算时间复杂性为n! 。16 .在忽略常数因子的情况下, O、C和。三个符号中,提供了算法运行时间 的一个上界。17 .回溯法的求解过程,即在问题的解空间树中,按 深度优先策略从根结点出发搜索解空间树。18 .分支限界法的求解过程,即在问题的解空间树中,按广度优先策略从

4、根结点出发搜索解空间树。19 .多项式 A( n) = amnm +HI + am + a.的土界为 2伯。20 .用分支限界法解布线问题时,对空间树搜索结束的标志是活结点表为空。21 .使用回溯法进行状态空间树裁剪分支时一般有两个标准:约束条件和目标函数的界,N皇后问题和0/1背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是0-1背包,只使用约束条件进行裁剪的是N皇后 。简答1 .算法分析的目的是什么? 分析算的的效率以求改进2 .算法的渐进时间复杂性的含义?当问题的规模n趋向无穷大时,影响算法效率的重要因素是T (n)的数量级,而其他因素仅是实用时间复杂度相差的

5、常熟倍,因此可以用T (n)的数量级(阶)评价算法。时间复杂度 T (n)的数量级(阶)称为渐进时间复杂性3 .最坏情况下的时间复杂性和平均时间复杂性有什么不同?最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max T(n , I) , I C Dn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n)=汇 P(I)T(n , I) I Dn4 .简述分治法的基本思想。分治法的是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原题相同5 .简述动态规划方

6、法所运用的最优化原理。“最优化原理”用数学化的语言来描述:假设为了解决某一优化问题,需要依次作出n个决策D1 , D2,,Dn,如若这个决策序列是最优的,对于任何一个整数 k, 1 < k < n,不论前面k个决策是怎样的,以后的最优决策只取决于由前面决策所确定的当前状态, 即以后的决策 Dk+1 , Dk+2,,Dn也是最优的。6 .简述最优子结构性质。一道动态规划问题其实就是一个递推问题,假设当前决策结果是fn,则最优子结构就是要让fn-k最优,最优子结构性质就是能让转移到n的状态是最优的,并且与后面的决策没有关系,即让后面的决策安心地使用前面的局部最优解的一种性质7 .简述回

7、溯法基本思想。回溯法的基本做法是搜索, 在问题的解空间树中, 按深度优先策略,从根结点出发搜索解空 间树。算法搜索至解空间树的任意一点时, 先判断该结点是否包含问题的解。 如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。8 . 用回溯法求解的问题,其解如何表示?有什么规定?问题的解可以表示为n元组:(x1,x2, xn) , xi C Si, Si为有穷集合,xi C Si, (x1,x2, xn)具备完备性,即(x1,x2, xn)是合理的,则(x1,x2, xi) (i<n)一定合理。9 . 回溯法的搜索特点是什么?在解

8、空间树上跳跃式地深度优先搜索,即用判定函数考察xk 的取值, 如果 xk 是合理的就搜索 xk 为根节点的子树,如果xk 取完了所有的值,便回溯到xk-1 。10 . 贪心算法的基本思想?是一种依据最优化量度依次选择输入的分级处理方法。基本思路是:首先根据题意,选取一种量度标准;然后按这种量度标准对这n 个输入排序,依次选择输入量加入部分解中。如果当前这个输入量的加入,不满足约束条件,则不把此输入加到这部分解中。11 . 什么是直接递归和间接递归?消除递归一般要用到什么数据结构?在定义一个过程或者函数的时候又出现了调用本过程或者函数的成分,既调用它自己本身,这称为直接递归。如果过程或者函数P调

9、用过程或者函数Q, Q又调用P,这个称为间接递归。消除递归一般要用到栈这种数据结构。算法填空1. n后问题回溯算法(1)用二维数组 ANN存储皇后位置,若第i行第j列放有皇后,则 Aij为非0值,否 则值为0。(2)分别用一维数组 MN、L2*N-1、R2*N-1表示竖列、左斜线、右斜线是否放有棋子, 有则值为1,否则值为0。for ( j=0; j<N; j+ )if(!Mn&&!Ln+n&&!Rn-j+N)安全检查Aij=i+1;/放皇后M仁Li+j=Ri-j+N=1;if ( i=N-1 )输出结果;else try(i+1,M,L,R,A);/ 试

10、探下一行Aij=0;/去皇后Mj=Li+j=Ri-j+N=0;2 .数塔问题。有形如下图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走,一起走到底层,要求找出一条路径,使路径上的值最大。for ( r=n-2; r>=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; / 乘U余容量 double

11、bound = cp;结点的上界while (i <= n && wi <= cleft) cleft-=wi;bound+=pi;i+if (i <= n)bound+=pi*cleft/wireturn bound;4 .用回溯法解图的 m着色问题时,使用下面的函数OK检查当前扩展结点的每一个儿子所相应的颜色的可用性,则需耗时(渐进时间上限) 。private static boolean ok( int k )/ 检查颜色可用性for(int j=1产n;j+)if( akj&&xj=xk )return false;return tru

12、e; 5 . Hanoi 算法Hanoi ( n, a, b, c )if ( n=1 )move(a,c);elseHanoi(n-1,a,c,b);Move(a,c);Hanoi ( n-1, b, a, c );算法应用1 .给定多项式p(x) = anxn + an-1Xn-1 + ax + a。,假设使用以下方法求解:p = ao;xpower = 1;for ( i=1; i<=n; i+ )xpower = x * xpower;p = p + ai * xpower;(1)该算法最坏情况下使用的加法和乘法分别为多少次?(2)能不能对算法的性能进行提高?如果可以,请写出改进

13、算法。(1)该算法最坏情况下使用的加法n次,乘法2n次(2)改进的算法为:float Horner(A, float x) p=An+1;for (j=1; j<=n; j+)p=x*p+An-j;return p;该算法中使用加法n次,乘法n次2 .假设有7个物品,它们的重量和价值如下表所示。若这些物品均不能被分割,且背包容 量M = 150,使用回溯方法求解此背包问题。请写出状态空间搜索树。物品ABCDEFG重量35306050401025价值104030503540303 .已知在如下所示的电路板中,阴影部分是已作了封锁标记的方格,请按照队列式分支限界法在图中确定a到b的最短布线方

14、案,要求布线时只能沿直线或直角进行,在图中标出求得最优解时各方格情况。4 .设有n=2k个运动员要进行循环赛,现设计一个满足以下要求的比赛日程表:每个选手必须与其他 n-1名选手比赛各一次;每个选手一天至多只能赛一次; 循环赛要在最短时间内完成。(1)如果n=2k,循环赛最少需要进行多少天;如果nwf,循环赛最少需要进行多少天。(2)当n=23=8时,请画出循环赛日程表:5 .已知 A =(aj(k)ri*ri +,k=1 , 2, 3, 4, 5, 6, ri=5,2=10,3=3,4=12,5=5,6=50, 7=6,求矩阵链积 Ai>A2>3小435小6的最佳求积顺序。使用

15、算法进行求解。最优值数组为:123456123456最优断开位置数组为:123456123456因此,最佳乘积序列为 。共执行乘法 次。6 .棋盘覆盖问题。(1)将下图特殊棋盘进行 L型骨牌填充。(2)算法时间复杂性。7 .用分支限界法解装载问题时,对算法进行了一些改进,下面的程序段给出了改进部分。试说明划线部分完成什么功能,以及这样做的原因,即采用这样的方式, 算法在执行上有什么不同。/检查左儿子结点int wt = ew + wi;/左儿子结点的重量if ( wt <= c ) /可行结点if ( wt > bestw ) bestw = wt ;/加入活结点队列if ( i

16、< n ) queue.put( new Integer( wt );/检查右儿子结点if ( ew + r > bestw && i < n )queue.put( new Integer( wt ) );/ 可能含最优解ew=( ( Integer )queue.remove() ).intValue();/ 取下扩展结点8 .单源最短路径的求解。给定带权有向图(如下图所示) G = ( V, E ),其中每条边的权是 非负实数。另外,还给定 V中的一个顶点,称为源。现在要计算从源到所有其它各顶点的 最短路长度。这里路的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。请用Dijkstra

温馨提示

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

评论

0/150

提交评论