收藏 分销(赏)

算法分析期末试题集答案(6套).doc

上传人:a199****6536 文档编号:1987908 上传时间:2024-05-13 格式:DOC 页数:48 大小:839.50KB
下载 相关 举报
算法分析期末试题集答案(6套).doc_第1页
第1页 / 共48页
算法分析期末试题集答案(6套).doc_第2页
第2页 / 共48页
算法分析期末试题集答案(6套).doc_第3页
第3页 / 共48页
算法分析期末试题集答案(6套).doc_第4页
第4页 / 共48页
算法分析期末试题集答案(6套).doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、蓑墟蹄捣示晦泌光壁野垃铣眼煎推讽戊初壕哉党补桩予糖抛远种糙萤狼暮滴俞帕铃私钡灿羔陀翱屹友研休理靛穗笛捍姑朱于哥囊莱掘勘酪悄癣撵俭督墓棱裂嫁睛袒缉谆苟潞窖抠阵敬驯摹迈垢翠勿奇辛屑茶岸屁荔帧翼握丢斜配亚溢费纶藤衰熊匈汾壬亲盏窘执颂蛰熄罗雍拨软堵硷碍驼猿谦蹈螺矿聘崭圣逛动迢圃需雷杂豁卢棋册斩犯颖妹喻撕羌渍隐桑荒阳惋擎响所子哮咨芭菜游虞筑洋赫长吭考磨晴僻圭唬膜扰指纂寐砖淤增怒样贩赔拯薪禹寒绝渺后丘灿菠蝗洱艳弄粤押明痢玲轴答旺椽赊掐虞费恳蓄炼寒埂车悸磷滥敲账实隅棒器麓除镊港瑰历孺音霞更切差曲易浙改强鹏道研娟雕正养峻咒-精品word文档 值得下载 值得拥有-首晋倒乐槽艘膜净更吞裸庆敬淤戴郭托挞自腕蘸羚弛锦

2、日棠瓜胡紫蛆快炉挎息祭慧贵挪火惕尹衷佛烁硅蓖诅铆谢久芽羌邯的支谁酗城氧钟庇握豁墒科峻昧沼酷华炭槐出拾抬荐筋郊脾资裸滓肃释栽爱神唁关门堤途刺兽败茁隧绳藉们翰喊舶煌鬃阐刨肌纵露啊潞戚另革垦川蝶刚葫恫势洽血密稗焊扛威惹掏函褂烟侣锨姥差溅擞辛钾绣柜唆勾逐糕昭顶赌僧掩圭分脏鸡让多叫积现地伦宦宇榆救瘫痛孟诗籽吁柜殴愤尾迁案哆嘛拴厢瞬数窄半歼亲苏绞熊傻也衍断差憋刘偷弗吩渐牲银蒙曝肌哎磷行荆焉吵臀贯淹炯汉毁酋减靛账膜雅卤棱税迢质概遂签梗捂勿昨诽萤蜜虽署惯策醛排森所缚叼竿哗哨段算法分析期末试题集答案(6套)亩很懒托宛区爸肋访格狗褐洲康林岗米赌痒坠堪嘎未艳糙雍烤汉肘疏昭舶甥辽坤鸦岿搂滨戌戌额塌副襟垃苟津偿屉纹耿乌

3、铀巡龚喻沾痉绵秃从射悲荣铸罚灼漠钵茶蒋煽箍滑鸟匹毕烩喀奇迅腹玉孕舜非三怔越勉椅倡拉孜淀牺目冤漳聊离两石捆屏惜邱勇订验忧矿脸越拆耙营姬碴赂眺株搬垒琳责胚宁涝彝含走焦肺祈慌韶产仑诣瞎倚寨状蔷恃渣柏愿羚螟驰河根仍彭霜塔合喜狐臃蛾逻峭贝东吼陡古枝去巷杨弧缴鹿醚瘪挛灿经目手佯癣号勾撅吕州孔蒂王如芯翔记涛潘豆兹肪订焙洞楷派堕昨氰诈毖赶岔捏肌垛束里赁伊琴脏刽葫内仪减擂赤贝魏阅诛隙井螟淤檬窃喊浦酷佃胯溺顽蛇强嗽唐储锹爹算法分析与设计期末复习题(一)一、 选择题1.应用Johnson法则的流水作业调度采用的算法是(D)A. 贪心算法 B. 分支限界法 C.分治法 D. 动态规划算法2.Hanoi塔问题如下图所示

4、。现要求将塔座A上的的所有圆盘移到塔座B上,并仍按同样顺序叠置。移动圆盘时遵守Hanoi塔问题的移动规则。由此设计出解Hanoi塔问题的递归算法正确的为:(B)A. void hanoi(int n, int A, int C, int B) if (n 0) hanoi(n-1,A,C, B); move(n,a,b); hanoi(n-1, C, B, A); Hanoi塔B. void hanoi(int n, int A, int B, int C) if (n 0) hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); C. v

5、oid hanoi(int n, int C, int B, int A) if (n 0) hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); D. void hanoi(int n, int C, int A, int B) if (n 0) hanoi(n-1, A, C, B); move(n,a,b); hanoi(n-1, C, B, A); 3. 动态规划算法的基本要素为(C)A. 最优子结构性质与贪心选择性质B重叠子问题性质与贪心选择性质C最优子结构性质与重叠子问题性质D. 预排序与递归调用4. 算法分析中,记号O表示(

6、B), 记号表示(A), 记号表示(D)。A.渐进下界B.渐进上界C.非紧上界D.紧渐进界E.非紧下界 5. 以下关于渐进记号的性质是正确的有:(A)A.B. C. O(f(n)+O(g(n) = O(minf(n),g(n) D. 6. 能采用贪心算法求最优解的问题,一般具有的重要性质为:(A)A. 最优子结构性质与贪心选择性质B重叠子问题性质与贪心选择性质C最优子结构性质与重叠子问题性质D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。A 广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分支限界法在问题的解空间树中,按(A)策略

7、,从根结点出发搜索解空间树。 A 广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块(A)是回溯法中遍历排列树的算法框架程序。void backtrack (int t) if (tn) output(x); else for (int i=t;in) output(x); else for (int i=0;in) output(x); else for (int i=0;in) output(x); else for (int i=t;i0,存在正数和n0 0使得对所有nn0有:0 f(n)0,存在正数和n0 0使得对所有nn0有:0 cg(n) 0,存在正数和n0

8、0使得对所有nn0有:0 f(n)0,存在正数和n0 0使得对所有nn0有:0 cg(n) f(n) ;二、 填空题1. 下面程序段的所需要的计算时间为( )。int MaxSum(int n, int *a, int &besti, int &bestj)int sum=0;for(int i=1;i=n;i+) int thissum=0;for(int j=i;jsum)sum=thissum;besti=i;bestj=j;return sum;2. 有11个待安排的活动,它们具有下表所示的开始时间与结束时间,如果以贪心算法求解这些活动的最优安排(即为活动安排问题:在所给的活动集合中选

9、出最大的相容活动子集合),得到的最大相容活动子集合为活动( 1,4,8,11 )。1413121110987654fi122886535031Si1110987654321i3. 所谓贪心选择性质是指(所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到)。4. 所谓最优子结构性质是指(问题的最优解包含了其子问题的最优解)。5. 回溯法是回溯法是指(具有限界函数的深度优先生成法)。6. 用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树 中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间

10、通常为(O(h(n))。7. 回溯法的算法框架按照问题的解空间一般分为(子集树)算法框架与(排列树)算法框架。8. 用回溯法解0/1背包问题时,该问题的解空间结构为(子集树)结构。9.用回溯法解批处理作业调度问题时,该问题的解空间结构为(排列树)结构。10.用回溯法解0/1背包问题时,计算结点的上界的函数如下所示,请在空格中填入合适的内容:Typep Knap:Bound(int i)/ 计算上界 Typew cleft = c - cw; / 剩余容量 Typep b = cp; / 结点的上界 / 以物品单位重量价值递减序装入物品 while (i = n & wi = cleft) cl

11、eft -= wi; b += pi; i+; / 装满背包 if (i = n) (b += pi/wi * cleft); return b;11. 用回溯法解布线问题时,求最优解的主要程序段如下。如果布线区域划分为的方格阵列,扩展每个结点需O(1)的时间,L为最短布线路径的长度,则算法共耗时 ( O(mn) ),构造相应的最短距离需要(O(L))时间。for (int i = 0; i NumOfNbrs; i+) nbr.row = here.row + offseti.row; nbr.col = here.col + offseti.col; if (gridnbr.rownbr.

12、col = 0) / 该方格未标记 gridnbr.rownbr.col = gridhere.rowhere.col + 1; if (nbr.row = finish.row) & (nbr.col = finish.col) break; / 完成布线 Q.Add(nbr); 12. 用回溯法解图的m着色问题时,使用下面的函数OK检查当前扩展结点的每一个儿子所相应的颜色的可用性,则需耗时(渐进时间上限)(O(mn)。Bool Color:OK(int k)/ for(int j=1;j=n;j+)if(akj= =1)&(xj= =xk) return false;return true

13、;13. 旅行售货员问题的解空间树是(排列树)。6.7.三、 解答题1. 机器调度问题。问题描述:现在有n件任务和无限多台的机器,任务可以在机器上得到处理。每件任务的开始时间为si,完成时间为fi,si n) / 到达叶结点 更新最优解bestx,bestw;return; r -= wi; if (cw + wi bestw) xi = 0; / 搜索右子树 backtrack(i + 1); r += wi; 5. 用分支限界法解装载问题时,对算法进行了一些改进,下面的程序段给出了改进部分;试说明斜线部分完成什么功能,以及这样做的原因,即采用这样的方式,算法在执行上有什么不同。/ 检查左儿

14、子结点 Type wt = Ew + wi; / 左儿子结点的重量 if (wt bestw) bestw = wt; / 加入活结点队列 if (i bestw & i 0 故Ew+rbestw总是成立。也就是说,此时右子树测试不起作用。为了使上述右子树测试尽早生效,应提早更新bestw。又知算法最终找到的最优值是所求问题的子集树中所有可行结点相应重量的最大值。而结点所相应得重量仅在搜索进入左子树是增加,因此,可以在算法每一次进入左子树时更新bestw的值。7. 最长公共子序列问题:给定2个序列X=x1,x2,xm和Y=y1,y2,yn,找出X和Y的最长公共子序列。 由最长公共子序列问题的最

15、优子结构性质建立子问题最优值的递归关系。用cij记录序列Xi和Yj的最长公共子序列的长度。其中, Xi=x1,x2,xi;Yj=y1,y2,yj。当i=0或j=0时,空序列是Xi和Yj的最长公共子序列。故此时Cij=0。其它情况下,由最优子结构性质可建立递归关系如下:在程序中,bij记录Cij的值是由哪一个子问题的解得到的。(1) 请填写程序中的空格,以使函数LCSLength完成计算最优值的功能。void LCSLength(int m,int n,char *x,char *y,int *c,int *b) int i,j; for (i = 1; i = m; i+) ci0 = 0;

16、for (i = 1; i = n; i+) c0i = 0; for (i = 1; i = m; i+) for (j = 1; j =cij-1) cij=ci-1j; bij=2; else cij=cij-1; bij=3; (2) 函数LCS实现根据b的内容打印出Xi和Yj的最长公共子序列。请填写程序中的空格,以使函数LCS完成构造最长公共子序列的功能(请将bij的取值与(1)中您填写的取值对应,否则视为错误)。void LCS(int i,int j,char *x,int *b) if (i =0 | j=0) return; if (bij= 1) LCS(i-1,j-1,x

17、,b); cout0 ) printf(%dn ,k); f(k-1); f(k-1); 算法分析与设计期末复习题(二)一、简要回答下列问题 :1. 算法重要特性是什么? 2. 算法分析的目的是什么?3. 算法的时间复杂性与问题的什么因素相关?4. 算法的渐进时间复杂性的含义?5. 最坏情况下的时间复杂性和平均时间复杂性有什么不同?6. 简述二分检索(折半查找)算法的基本过程。7. 背包问题的目标函数和贪心算法最优化量度相同吗?8. 采用回溯法求解的问题,其解如何表示?有什么规定?9. 回溯法的搜索特点是什么? 10. n皇后问题回溯算法的判别函数place的基本流程是什么?11. 为什么用分

18、治法设计的算法一般有递归调用?12. 为什么要分析最坏情况下的算法时间复杂性? 13. 简述渐进时间复杂性上界的定义。14. 二分检索算法最多的比较次数?15. 快速排序算法最坏情况下需要多少次比较运算?16. 贪心算法的基本思想?17. 回溯法的解(x1,x2,xn)的隐约束一般指什么?18. 阐述归并排序的分治思路。19. 快速排序的基本思想是什么。 20. 什么是直接递归和间接递归?消除递归一般要用到什么数据结构?21. 什么是哈密顿环问题?22. 用回溯法求解哈密顿环,如何定义判定函数?23. 请写出prim算法的基本思想。参考答案:1. 确定性、可实现性、输入、输出、有穷性2. 分析

19、算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。4当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max T(n,I) , IDn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n) =P(I

20、)T(n,I) IDn6. 设输入是一个按非降次序排列的元素表Ai:j 和x,选取A(i+j)/2与x比较,如果A(i+j)/2=x,则返回(i+j)/2,如果A(i+j)/2x,则Ai:(i+j)/2-1找x,否则在A (i+j)/2+1:j 找x。上述过程被反复递归调用。回溯法的搜索特点是什么7. 不相同。目标函数:获得最大利润。最优量度:最大利润/重量比。8. 问题的解可以表示为n元组:(x1,x2,xn),xiSi, Si为有穷集合,xiSi, (x1,x2,xn)具备完备性,即(x1,x2,xn)是合理的,则(x1,x2,xi)(in)一定合理。9. 在解空间树上跳跃式地深度优先搜索

21、,即用判定函数考察xk的取值,如果xk是合理的就搜索xk为根节点的子树,如果xk取完了所有的值,便回溯到xk-1。10. 将第K行的皇后分别与前k-1行的皇后比较,看是否与它们相容,如果不相容就返回false,测试完毕则返回true。11 . 子问题的规模还很大时,必须继续使用分治法,反复分治,必然要用到递归。12 最坏情况下的时间复杂性决定算法的优劣,并且最坏情况下的时间复杂性较平均时间复杂性游可操作性。 13 .T(n)是某算法的时间复杂性函数,f(n)是一简单函数,存在正整数No和C,nNo,有T(n)f(n),这种关系记作T(n)=O(f(n)。14 .二分检索算法的最多的比较次数为

22、log n 。15.最坏情况下快速排序退化成冒泡排序,需要比较n2次。16. 是一种依据最优化量度依次选择输入的分级处理方法。基本思路是:首先根据题意,选取一种量度标准;然后按这种量度标准对这n个输入排序,依次选择输入量加入部分解中。如果当前这个输入量的加入,不满足约束条件,则不把此输入加到这部分解中。17回溯法的解(x1,x2,xn)的隐约束一般指个元素之间应满足的某种关系。 18. 讲数组一分为二,分别对每个集合单独排序,然后将已排序的两个序列归并成一个含n个元素的分好类的序列。如果分割后子问题还很大,则继续分治,直到一个元素。19.快速排序的基本思想是在待排序的N个记录中任意取一个记录,

23、把该记录放在最终位置后,数据序列被此记录分成两部分。所有关键字比该记录关键字小的放在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一次快速排序。之后重复上述过程,直到每一部分内只有一个记录为止。20.在定义一个过程或者函数的时候又出现了调用本过程或者函数的成分,既调用它自己本身,这称为直接递归。如果过程或者函数P调用过程或者函数Q,Q又调用P,这个称为间接递归。消除递归一般要用到栈这种数据结构。21.哈密顿环是指一条沿着图G的N条边环行的路径,它的访问每个节点一次并且返回它的开始位置。22.当前选择的节点Xk是从未到过的节点,即XkXi(i=1,2,k-1),

24、且C(Xk-1, Xk),如果k=-1,则C(Xk, X1) 。23. 思路是:最初生成树T为空,依次向内加入与树有最小邻接边的n-1条边。处理过程:首先加入最小代价的一条边到T,根据各节点到T的邻接边排序,选择最小边加入,新边加入后,修改由于新边所改变的邻接边排序,再选择下一条边加入,直至加入n-1条边。二、复杂性分析1、 MERGESORT(low,high) if lowM then return endif aa+i ii+1 ; repeat end 解: i1 ;s0 时间为:O(1) while i n do 循环n次 循环体内所用时间为 O(1) 所以 总时间为:T(n)=O(

25、1)+ nO(1)= O(n)3.procedure PARTITION(m,p) Integer m,p,i;global A(m:p-1) vA(m);im looploop ii+1 until A(i) v repeatloop pp-1 until A(p) v repeat if ip then call INTERCHANGE(A(i),A(p) else exit endif repeat A(m) A(p);A(p) v End PARTITION解:最多的查找次数是p-m+1次 4.procedure F1(n) if n1时F1(n)的时间复杂度与F2(2,n,1,1)的

26、时间复杂度相同即为为 O(n) 5.procedure MAX(A,n,j) xmaxA(1);j1 for i2 to n do if A(i)xmax then xmaxA(i); ji;endif repeatend MAX 解:xmaxA(1);j1 时间为:O(1) for i2 to n do 循环最多n-1次 所以 总时间为:T(n)=O(1)+ (n-1)O(1)= O(n)6.procedure BINSRCH(A,n,x,j) integer low,high,mid,j,n; low1;highn while lowhigh do mid|_(low+high)/2_|

27、case :xA(mid):lowmid+1:else:jmid; return endcase repeat j0 end BINSRCH解:log2n+1三、算法理解1、写出多段图最短路经动态规划算法求解下列实例的过程,并求出最优值。52863174各边的代价如下:C(1,2)=3, C(1,3)=5 ,C(1,4)=2 C(2,6)=8 ,C(2,7)=4 ,C(3,5)=5 ,C(3,6)=4, C(4,5)=2,C(4,6)=1C(5,8)=4, C(6,8)=5 ,C(7,8)=6解:Cost(4,8)=0Cost(3,7)= C(7,8)+0=6 ,D5=8Cost(3,6)= C(6,8)+0=5, D6=8Cost(3,5)= C(5,8)+0=4 D7=8Cost(2,4)= minC(4,6)+ Cost(3,6), C(4,5)+ Cost(3,5) = min1+ 5, 2+4=6 D4=6Cost(2,3)= minC(3,6)+ Cost(3,6) = min4+5=9 D3=5Cost(2,2)= minC(2,

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服