算法设计与分析考试题及答案资格考试教师资格考试_资格考试-教师资格考试.pdf
1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特 殊类型问题的一系列运算,此外,算法还应具有以下五个重要特 性:_,_,_,_,。2.算法的复杂性有 和 之分,衡量一个算法好 坏的标准是 。3.某一问题可用动态规划算法求解的显著特征是 。4.若序列 X=B,C,A,D,B,C,D,Y=A,C,B,A,B,D,C,D,请给出序列 X 和 Y 的一个最长公共子序列。5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少 应包含。6.动态规划算法的基本思想是将待求解问题分解成若干 ,先求解,然后从这些 的解得 到原问题的解。7.以深度优先方式系统搜索问题解的算法称为。背包问题的回溯算法所需的计算时间为 用,动态规划算 法所需的计算时间为。9.动态规划算法的两个基本要素是 和。10.二分搜索算法是利用 实现的算法。二、综合题(50 分)1.写出设计动态规划算法的主要步骤。2.流水作业调度问题的 johnson 算法的思想。3.若 n=4,在机器 M1 和 M2 上加工作业 i 所需的时间分别为 ai 和 b i,且(a1,a2,a3,a4)=(4,5,12,10),(b 1,b2,b 3,b4)=(8,2,15,9)求 4 个作 业的最优调度方案,并计算最优值。4.使用回溯法解 0/1 背包问题:n=3,C=9,V=6,10,3,W=3,4,4,其解空间有长度为 3 的 0-1 向量组成,要求用一棵完全二叉树表示 其解空间(从根出发,左 1 右 0),并画出其解空间树,计算其最优 值及最优解。5.设 S=X1,X2,Xn是严格递增的有序集,利用二叉树的结点来 存储 S 中的元素,在表示 S 的二叉搜索树中搜索一个元素 X,返回的 结果有两种情形,(1)在二叉搜索树的内结点中找到 X=X i,其概率 为 b i。(2)在二叉搜索树的叶结点中确定 X(Xi,Xi+1 ),其概率为 ai。在表示 S 的二叉搜索树 T 中,设存储元素 Xi 的结点深度为 Ci;叶结点(Xi,Xi+1)的结点深度为 d i,则二叉搜索树 T 的平均路长 p 为多少假设二叉搜索树 Tij=Xi,Xi+1,Xj最优值为 mij,Wij=a i-1+b i+b j+a j,则 mij(1=i=j=n)递归关系表达式 为什么 6.描述 0-1 背包问题。三、简答题(30 分)1.流水作业调度中,已知有 n 个作业,机器 M1 和 M2 上加工作业 i 所需的时间分别为 ai 和 b i,请写出流水作业调度问题的 johnson 法则中对 ai 和 b i 的排序算法。(函数名可写为 sort(s,n))2.最优二叉搜索树问题的动态规划算法(设函数名 五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 binarysearchtree))答案:一、填空 1确定性 有穷性 可行性 0 个或多个输入 一个或多个输出 2.时间复杂性 空间复杂性 时间复杂度高低 3.该问题具有最优子结构性质 4.BABCD 或CABCD 或CADCD 5.一个(最优)解 6.子问题 子问题 子问题 7.回溯法 8.o(n*2 n)o(minnc,2 n)9.最优子结构 重叠子问题 10.动态规划法 二、综合题 1.问题具有最优子结构性质;构造最优值的递归关系表达式;最优值的算法描述;构造最优解;2.令 N 1=i|a i=b i;将 N 1 中作业按 ai 的非减序排序得到 N 1,将 N 2 中作业按 b i 的非增序排序得到 N 2;N 1 中作业接 N 2中作业就构成了满足 Johnson 法则的最优调度。3.步骤为:N1=1,3,N2=2,4;N 1=1,3,N 2=4,2;最优值为:38 五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 4.解空间为(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1),(1,1,0),(1,1,1)。解空间树为:1 A 0 B C 1 0 1 0 D E F G 1 1 0 1 1 0 0 0 H I J K L M N O 该问题的最优值为:16 最优解为:(1,1,0)n n 5.二叉树 T 的平均路长 P=bi*(1 Ci)+aj*dj i 1 j 0 mij=Wij+minmik+mk+1j(1=i=jj)6.已知一个背包的容量为 C,有 n 件物品,物品 i 的重量为 W i,价值 为 Vi,求应如何选择装入背包中的物品,使得装入背包中物品的总价值最大。三、简答题 1.void sort(flowjope s,int n)五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 int i,k,j,l;for(i=1;in)break;ag=0)if(sk.asj.a)k=j;swap(si.index,sk.index);swap(si.tag,sk.tag);l=i;sj.b)k=j;swap(si.index,sk.index);ag,sk.tag);2.void binarysearchtree(int a,int b,int n,int*m,int*s,int *w)int i,j,k,t,l;for(i=1;i=n+1;i+)wii-1=ai-1;mii-1=0;for(l=0;l=n-1;l+)Init-single-source(G,s)2.S=3.Q=VG Q 五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 do u=min(Q)S=S u for each vertex 3 do 4 四、算法理解题(本题 10 分)根据优先队列式分支限界法,求下图中从 v1 点到 v9 点的单源最短 路径,请画出求得最优解的解空间树。要求中间被舍弃的结点用 标记,获得中间解的结点用单圆圈框起,最优解用双圆圈框起。五、算法理解题(本题 5 分)设有 n=2 k 个运动员要进行循环赛,现设计一个满足以下要求的比 赛日程表:每个选手必须与其他 n-1 名选手比赛各一次;每个选手一天至多只能赛一次;循环赛要在最短时间内完成。(1)如果 n=2 k,循环赛最少需要进行几天;(2)当 n=2 3=8 时,请画出循环赛日程表。六、算法设计题(本题 15 分)分别用贪心算法、动态规划法、回溯法设计 0-1 背包问题。要求:说明所使用的算法策略;写出算法实现的主要步骤;分析算法的时间。七、算法设计题(本题 10 分)通过键盘输入一个高精度的正整数 n(n 的有效位数 240),去掉 其中任意 s 个数字后,剩下的数字按原左右次序将组成一个新的正整 数。编程对给定的 n 和 s,寻找一种方案,使得剩下的数字组成的新 五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 数最小。【样例输入】178543 S=4 【样例输出】13 答案:一、填空题(本题 15 分,每小题 1 分)1规则 一系列运算 2.随机存取机 RAM(Random Access Machine);随机存取存储程序机 RASP(Random Access Stored Program Machine);图灵机(Turing Machine)3.算法效率 4.时间、空间、时间复杂度、空间复杂度 52 n 6 最好 局部最优选择 五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 7.贪心选择 最优子结构 二、简答题(本题 25 分,每小题 5 分)1、分治法的基本思想 是将一个规模为 n 的问题分解为 k 个规模较小的子问 题,这些子问题互相独立且与原问题相同;对这 k 个子问题分别求解。如果子问题的规模仍然不够小,则再划分为 k 个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止;将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。2、“最优化原理”用数学化的语言来描述:假设为了解决某一优化问题,需要依次作出 n 个决策 D1,D2,Dn,如若这个决策序列是最优的,对于任何一个整数 k,1 k n,不论前面 k 个决策是怎样的,以后的最 优决策只取决于由前面决策所确定的当前状态,即以后的决策 Dk+1,Dk+2,Dn 也是最优的。3、某个问题的最优解包含着其子问题的最优解。这种性质称为 最优子结构 性质。4、回溯法的基本思想 是在一棵含有问题全部可能解的状态空间树上进行深 度优先搜索,解为叶子结点。搜索过程中,每到达一个结点时,则判断该结点为根的子树是否含有问题的解,如果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上层父结点,继续下一步深度优先搜索过程。在回溯法中,并不是先构造出整棵状态空间树,再进行搜索,而是在搜索过程,逐步构造出状态空间树,即边搜索,边构造。5、P(Polynomial 问题):也即是多项式复杂程度的问题。NP 就是 Non-deterministic Polynomial 的问题,也即是多项式复杂程度 的非确定性问题。NPC(NP Complete)问题,这种问题只有把解域里面的所有可能都穷举了 之后才能得出答案,这样的问题是 NP 里面最难的问题,这种问题就是 NPC 问题。三、算法填空(本题 20 分,每小题 5 分)1、n 后问题回溯算法 (1)!Mj&!Li+j&!Ri-j+N (2)Mj=Li+j=Ri-j+N=1;(3)try(i+1,M,L,R,A)(4)Aij=0 (5)Mj=Li+j=Ri-j+N=0 2、数塔问题。(1)c=r 五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 (2)trc+=tr+1c (3)trc+=tr+1c+1 3、Hanoi 算法 (1)move(a,c)(2)Hanoi(n-1,a,c,b)(3)Move(a,c)4、(1)pv=NIL (2)pv=u (3)v adju (4)Relax(u,v,w)四、算法理解题(本题 10 分)1234 5 6 7 8 五、(1)8 天(2 分);2143 6 5 8 (2)当 n=2 3=8 时,循环赛日程表(3 分)。7 六、算法设计题(本题 15 分)(1)贪心算法 O(nlog(n)首先计算每种物品单位重量的价值 Vi/Wi,然后,依贪心选择策略,将尽 可能多的单位重量价值最高的物品装入背包。若将这种物品全部装入背包 五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 后,背包内的物品总重量未超过 C,则选择单位重量价值次高的物品并尽 可能多地装入背包。依此策略一直地进行下去,直到背包装满为止。具体算法可描述如下:void Knapsack(int n,float M,float v,float w,float x)Sort(n,v,w);int i;for(i=1;i=n;i+)xi=0;float c=M;for(i=1;ic)break;xi=1;c-=wi;if(i=n)xi=c/wi;(2)动态规划法 O(nc)m(i,j)是背包容量为 j,可选择物品为 i,i+1,n 时 0-1 背包问题的最 优值。由 0-1 背包问题的最优子结构性质,可以建立计算 m(i,j)的递归式如下。max m(i 1,j),m(i 1,j wi)vi j wi m(i,j)m(i 1,j)0 j wi vn j wn m(n,j)j wn 0 0 void KnapSack(int v,int w,int c,int n,int m11)五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 int jMax=min(wn-1,c);for(j=0;j=jMax;j+)/*m(n,j)=0 0=jwn*/mnj=0;for(j=wn;j=wn*/mnj=vn;for(i=n-1;i1;i-)int jMax=min(wi-1,c);for(j=0;j=jMax;j+)/*m(i,j)=m(i+1,j)0=jwi*/mij=mi+1j;for(j=wi;j=wn*/mij=max(mi+1j,mi+1j-wi+vi);m1c=m2c;if(c=w1)m1c=max(m1c,m2c-w1+v1);(3)回溯法 O(2 n)cw:当前重量 cp:当前价值 bestp:当前最优值 void backtrack(int i)/回溯法 i 初值 1 if(i n)/到达叶结点 bestp=cp;return;五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形 if(cw+wi bestp)/搜索右子树 backtrack(i+1);七、算法设计题(本题 10 分)为了尽可能地逼近目标,我们选取的贪心策略为:每一步总是选择一个使剩 下的数最小的数字删去,即按高位到低位的顺序搜索,若各位数字递增,则删除 最后一个数字,否则删除第一个递减区间的首字符。然后回到串首,按上述规则 再删除下一个数字。重复以上过程 s 次,剩下的数字串便是问题的解了。具体算法如下:输入 s,n;while(s 0)i=1;/从串首开始找 while(i length(n)&(ni1)&(n1=0 )delete(n,1,1);/删去串首可能产生的无用零 输出 n;五个重要特性算法的复杂性有和之分衡量一个算法好坏的标准是某一问题可用动态规划算法求解的显著特征是若序列请给出序列和的一个最长公共子序列用回溯法解问题时应明确定义问题的解空间问题的解空间至少应包含动态规划解的算法称为背包问题的回溯算法所需的计算时间为用动态规划算法所需的计算时间为动态规划算法的两个基本要素是和二分搜索算法是利用实现的算法二综合题分写出设计动态规划算法的要步骤流水作业调度问题的算法的思想若间有长度为的向量组成要求用一棵完全二叉树表示其解空间从根出发左右并画出其解空间树计算其最优值及最优解设是严格递增的有序集利用二叉树的结点来存储中的元素在表示的二叉搜索树中搜索一个元素返回的结果有两种情形