1、算法分析与设计期末考试复习题纲完整版docWORD格式算法分析与设计期末复习题一、选择题1.算法必须具备输入、输出和(D)等 4 个特性。A可行性和安全B性确定性和易读性C有穷性和安全D性有穷性和确定性2.算法分析中,记号O表示(B),记号 表示( A)A. 渐进下界B.渐进上界C. 非紧上界D.紧渐进界3.假设某算法在输入规模为 n 时的计算时间为 T(n)=3*2n 。在某台计算机上实现并完成概算法的时间为 t 秒。现有另一台计算机,其运行速度为第一台64 倍,那的么在这台新机器上用同一算法在t 秒内能解输入规模为多大的问题?( B)解题方法: 3*2n*64=3*2xn+8Bn+6ADn
2、+7n+5C4.设问题规模为N 时,某递归算法的时间复杂度记为T(N) ,已知T(1)=1 ,T(N)=2T(N/2)+N/2 ,用 O表示的时间复杂度为(C)。O(logN)BO(N)ACO(NlogN)D O(N2logN)5.直接或间接调用自身的算法称为B()。A贪心算法B递归算法迭代算法D回溯法C6.Fibonacci 数列中,第 4 个和第 11 个数分别是(D)。A5, 89B3,89C5, 144D3,1447.在有 8 个顶点的凸多边形的三角剖分中,恰有(B)。条弦和7个三角形B5条弦和6个三角形A6C6 条弦和6 个三角形D5 条弦和5 个三角形8.一个问题可用动态规划算法或
3、贪心算法求解的关键特征是问题B)。的(A重叠子问题B最优子结构性质贪心选择性质D定义最优解C9.下列哪个问题不用贪心法求解C()。哈夫曼编码问题B单源最短路径问题A最大团问题D最小生成树问题C10.下列算法中通常以自底向上的方式求解最优解的是(B)。A备忘录法B动态规划法C贪心法D回溯法11.下列算法中不能解决 0/1 背包问题的是( A)。A贪心法 B 动态规划C回溯法 D 分支限界法专业资料整理WORD格式12. 下列哪个问题可以用贪心算法求解( D )。1专业资料整理WORD格式ALCS问题B批处理作业问题C0-1 背包问题D哈夫曼编码问题13.用回溯法求解最优装载问题时,若待选物品m种
4、,则该问题的解空间树的结为点个数为()。Am!B 2m+1C2m+1-1D2m14.二分搜索算法是利用(A)实现的算法。分治策略B动态规划法AC贪心法D回溯法15.下列不是动态规划算法基本步骤的是(B)。 P44A找出最优解的性质B构造最优解C算出最优解 ( 应该是最优值 )D定义最优解16.下面问题( B)不能使用贪心法解决。A单源最短路径问题B N 皇后问题C最小花费生成树问题D背包问题17.使用二分搜索算法在 n 个有序元素表中搜索一个特定元素,在最好情况和最坏情况下搜索的时间复杂性分别为(A)。 P17AO(1) , O(logn)B O(n) , O(logn)CO(1) , O(n
5、logn)D O(n) , O(nlogn)18.优先队列式分支限界法选取扩展结点的原则C)。 P162是(A先进先出B后进先出C结点的优先级D随机19.下面不是分支界限法搜索方式的是(D)。 P161广度优先B最小耗费优先A深度优C最大效益优先D先20.分支限界法解最大团问题时,活结点表的组织形式是(B)。最小堆B最大堆AC栈D数组21.下列关于计算机算法的描述不正确的是)。(C P1A算法是指解决问题的一种方法或一个过程B算法是若干指令的有穷序列C.算法必须要有输入和输出D算法是编程的思想22.下列关于凸多边形最优三角剖分问题描述不正确的A)。是(A n+1 个矩阵连乘的完全加括号和n 个
6、点的凸多边形的三角剖分对应B在有 n 个顶点的凸多边形的三角剖分中,恰n-3 条弦有C该问题可以用动态规划法来求解D在有 n 个顶点的凸多边形的三角剖分中,恰n-2 个三角形有23.动态规划法求解问题的基本步骤不包括(C)。 P44A递归地定义最优值B分析最优解的性质,并刻画其结构特征C根据计算最优值时得到的信息,构造最优解 ( 可以省去的 )D以自底向上的方式计算出最优值专业资料整理WORD格式24. 分治法所能解决的问题应具有的关键特征是( C )。 P162专业资料整理WORD格式A该问题的规模缩小到一定的程度就可以容易地解决B该问题可以分解为若干个规模较小的相同问题C利用该问题分解出的
7、子问题的解可以合并为该问题的解D该问题所分解出的各个子问题是相互独立的下列关于回溯法的描述不正确的是25. ( D )。 P114A回溯法也称为试探法B回溯法有“通用解题法”之称C回溯法是一种能避免不必要搜索的穷举式搜索法D用回溯法对解空间作深度优先搜索时 只能用递归方法实现26. 常见的两种分支限界法为( D)。 P161A.广度优先分支限界法与深度优先分支限界法;B.队列式( FIFO)分支限界法与堆栈式分支限界法;C.排列树法与子集树法;D.队列式( FIFO)分支限界法与优先队列式分支限界法;二、填空题f(n)=3n2)1.n2 +10 的渐近性态 f(n)=O(,g(n)=10log
8、3 n 的渐近性态 g(n)=O(n) 。2.一个“好”的算法应具有正确性、可读性、健壮性和高效率和低存储量需求等特性。3.算法的时间复杂性函数表示C=F(N,I,A)为,分析算法复杂性的目的在于比较求解同意问题的两个不同算法的效率的效率。4.构成递归式的两个基本要素是递归的边界条件和递归的定义。5.单源最短路径问题可用分支限界法和贪心算法求解。6.用分治法实现快速排序算法时,最好情况下的时间复杂性为O(nlogn),最坏情况下的时间复杂性为 O(n2),该算法所需的时间与运行时间和划分两方面因素有关。 P267.0-1 背包问题的解空间树为完全二叉树; n 后问题的解空间树为排列树;8.常见
9、的分支限界法有队列式FIFO)分支限界法和优先队列式分支限界(法。9.回溯法搜索解空间树时常用的两种剪枝函数为约束函数和剪枝函数。10.分支限界法解最大团问题时,活结点表的组织形式是最大堆;分支限界法解单源最短路径问题时,活结点表的组织形式是最小堆。三、算法填空题1.递归求解 Hanoi 塔问题 / 阶乘问题。例 1: 阶乘函数 n!P12阶乘的非递归方式定义: n!n(n1)(n2)21试写出阶乖的递归式及算法。递归式为:1n 0边界条件n!n(n1)!n0专业资料整理WORD格式3专业资料整理WORD格式递归方程递归算法:intfactorial(intn)if(n=0)return1;
10、递归出口returnn*factorial(n-1); 递归调用例 2: 用递归技术求解 Hanoi 塔问题 ,Hanoi 塔的递归算法。 P15其中 Hanoi(intn,inta,intc,intb) 表示将塔座 A 上的 n 个盘子移至塔座 C,以塔座 B 为辅助。Move(a,c) 表示将塔座 a 上编号为 n 的圆盘移至塔座 c 上。voidhanoi(intn,inta,intc,intb)if(n0)hanoi(n-1,a,b,c);move(a,c);hanoi(n-1,b,c,a);2.用分治法求解快速排序问题。快速排序算法 P25 、作业、课件第 2 章( 2) 42 页
11、-50 页templatevoidQuickSort(Typea,intp,intr)if(pr)intq=Partition(a,p,r);QuickSort(a,p,q-1);QuickSort(a,q+1,r) ;专业资料整理WORD格式4专业资料整理WORD格式Partition 函数的具体实现templateintPartition(Typea,intp,intr)inti=p,j=r+1;Typex=ap;/ 将 x 的元素交换到右边区域while(true)while(a+ix&ix);if(i=j)break;Swap(ai,aj);ap=aj;aj=x;returnj;3.用
12、贪心算法求解最优装载问题。最优装载问题 P95 课件第 4 章 (2) 第 3-8 页templatevoidLoading(intx,Typew,Typec,intn)int*t=newintn+1;Sort(w,t,n);for(inti=1;i=n;i+)xi=0;for(intj=1;j=n&wtj=c;j+)xti=1;c-=wtj;专业资料整理WORD格式5专业资料整理WORD格式4.用回溯法求解 0-1 背包 / 批处理作业调度 / 最大团问题,要会画解空间树。例 1:用回溯法求解 0-1 背包 P133 课件第 5 章 (2) 第 24-38 页templateclassKna
13、pprivate:TypepBound(inti);/ 计算上界voidBacktrack(inti);Typewc;/ 背包容量intn;/ 物品数Typew*w;/ 物品重量数组Typep*p;/ 物品价值数组Typewcw;/ 当前重量Typepcp;/ 当前价值Typepbestp;/ 当前最优价值;voidKnap:Backtrack(inti)if(in)bestp=cp;return;if(cw+wibestp)/ 进入右子树Backtrack(i+1);TypepKnap:Bound(inti)Typewcleft=c-cw;/ 剩余的背包容量Typepb=cp;/b 为当前价
14、值/依次装入单位重量价值高的整个物品专业资料整理WORD格式6专业资料整理WORD格式while(i=n&wi=cleft)cleft-=wi; b+=pi; i+; if(i=n)/ 装入物品的一部分b+=pi*cleft/wi;returnb;/ 返回上界classObject/ 物品类friendintKnapsack(int*,int*,int,int);public:intoperator=a.d);intID;/ 物品编号floatd;/ 单位重量价值;TypepKnapsack(Typepp,Typeww,Typewc,intn)/ 为 TypepKnapsack 初始化Type
15、wW=0;/ 总重量TypepP=0;/ 总价值Object*Q=newObjectn;/ 创建物品数组,下标从 0 开始for(inti=1;i=n;i+)/ 初始物品数组数据Qi-1.ID=i;Qi-1.d=1.0*pi/wi;P+=pi; W+=wi;if(W=c)/ 能装入所有物品returnP;if(W=c)/ 能装入所有物品returnP;QuickSort(Q,0,n-1);/ 依物品单位重量价值非增排序专业资料整理WORD格式7专业资料整理WORD格式KnapK;K.p=newTypepn+1;K.w=newTypewn+1;for(inti=1;in) for(intj=1;
16、j=n;j+) bestxj=xj; bestf=f; elsefor(intj=i;jf1)?f2i-1:f1)+mxj2;f+=f2i;if(fn)for(intj=1;j=n;j+)bestxj=xj;bestn=cn;return;/ 判断第 i 个顶点是否与已选顶点都有边相连intOK=1;for(intj=1;jbestn)/ 如有可能在右子树中找到更大的团,则进入右子树 xi=0; Backtrack(i+1); 计算时间: O(n2n)四、简答题1.请简述使用动态规划算法解题的基本步骤。P44动态规划的设计分为以下4 个步骤:(1)找出最优解的性质,并刻划其结构特征。(2)递归
17、地定义最优值。(3)以自底向上的方式计算出最优值。(4)根据计算最优值时得到的信息,构造最优解。2. 简述动态规划方法与分治法的异同。 P44相同点:动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题 ,然后从这些子问题的解得到原问题的解。不同点:分治法的子问题互相独立且与原问题相同。与分治法不同的是,适合于动态规划求解的问题,经分解得到的子问题往往不是互相独立的。也就是各个子问题包含公共的子子问题。3. 试比较 Prim 算法与 Kruskal 算法的异同。 105-P107相同点: Prim( 普里姆 ) 算法和 Kruskal( 克鲁斯卡尔 ) 算法都可以看作是应用贪心算法构造最小生成树的例子。利用了最小生成树性质。不同点:10专业资料整理WORD格式Prim( 普里姆 ) 算法:在这个过程中选取到的所有边恰好构成 G的一棵最小生成树 T, T 中包含 G的 n-1 条边,且不形成回路。Kruskal( 克鲁斯卡尔 ) 算法:是构造最小
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1