算法分析复习题(含答案)_第1页
算法分析复习题(含答案)_第2页
算法分析复习题(含答案)_第3页
算法分析复习题(含答案)_第4页
全文预览已结束

下载本文档

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

文档简介

1、一、选择题1、衡量一个算法好坏的标准是(C)。( A)运行速度快( B)占用空间少( C)时间复杂度低 ( D)代码短2、记号 O的定义正确的是(A)。( A) O(g(n) = f(n) |存在正常数 c 和 n0使得对所有 nn0 有: 0f(n)cg(n) ;( B) O(g(n) = f(n) |存在正常数 c 和 n0使得对所有 nn0 有: 0cg(n)f(n) ;( C) O(g(n) = f(n) |对于任何正常数c>0,存在正数和n0 >0使得对所有 nn0有: 0f(n)<cg(n) ;( D) O(g(n) = f(n) |对于任何正常数c>0,存

2、在正数和n0 >0使得对所有 nn0有: 0 cg(n) < f(n) ;3、二分搜索算法是利用(A)实现的算法。( A)分治策略( B)动态规划法( C)贪心法( D)回溯法4、使用分治法求解不需要满足的条件是(A )。( A)子问题必须是一样的( B)子问题不能够重复( C)子问题的解可以合并( D)原问题和子问题使用相同的方法解5、合并排序算法是利用(A)实现的算法。( A)分治策略( B)动态规划法( C)贪心法( D)回溯法6、实现大整数的乘法是利用(C)的算法。( A)贪心法( B)动态规划法( C)分治策略( D)回溯法7、以下不可以使用分治法求解的是(D )。( A

3、)棋盘覆盖问题( B)选择问题( C)归并排序( D) 0/1 背包问题8、实现循环赛日程表利用的算法是(A)。( A)分治策略( B)动态规划法 ( C)贪心法( D)回溯法9、实现棋盘覆盖算法利用的算法是(A)。( A)分治法( B)动态规划法( C)贪心法( D)回溯法10、矩阵连乘问题的算法可由(B)设计实现。( A)分支界限算法(B)动态规划算法( C)贪心算法( D)回溯算法11、实现大整数的乘法是利用的算法(C)。( A)贪心法( B)动态规划法( C)分治策略( D)回溯法12、最长公共子序列算法利用的算法是(B)。( A)分支界限法( B)动态规划法( C )贪心法( D)回

4、溯法13、下列算法中通常以自底向上的方式求解最优解的是(B)。( A)备忘录法( B)动态规划法( C)贪心法( D)回溯法14、下列是动态规划算法基本要素的是(D)。( A)定义最优解( B)构造最优解( C)算出最优解( D)子问题重叠性质15、下列不是动态规划算法基本步骤的是(A)。( A)找出最优解的解空间( B)构造最优解( C)算出最优解(D)定义最优解16、能采用贪心算法求最优解的问题,一般具有的重要性质为:( A)( A)最优子结构性质与贪心选择性质( B)重叠子问题性质与贪心选择性质( C)最优子结构性质与重叠子问题性质( D)预排序与递归调用17、下面问题( B )不能使用

5、贪心法解决。( A)单源最短路径问题( B) N皇后问题( C)最小花费生成树问题( D)背包问题18、以下不可以使用分治法求解的是(D )。( A)棋盘覆盖问题( B)选择问题( C)归并排序( D) 0/1 背包问题19、备忘录方法是那种算法的变形(B)。( A)分治法( B)动态规划法( C)贪心法( D)回溯法20、下列算法中通常以深度优先方式系统搜索问题解的是(D)。( A)备忘录法( B)动态规划法( C)贪心法( D)回溯法21、下面哪种函数是回溯法中为避免无效搜索采取的策略(B)( A)递归函数( B)剪枝函数( C)随机数函数( D)搜索函数22、回溯法在问题的解空间树中,按

6、(D)策略,从根结点出发搜索解空间树。( A)广度优先( B)活结点优先( C)扩展结点优先( D)深度优先23、回溯法的效率不依赖于下列哪些因素(D)。( A) . 满足显约束的值的个数( B)计算约束函数的时间( C) 计算限界函数的时间( D)确定解空间的时间24、回溯法解 0-1背包问题时的解空间树是(A)。( A)子集树(B)排列树( C)深度优先生成树( D)广度优先生成树25、回溯法解旅行售货员问题时的解空间树是(B)。( A)子集树(B)排列树( C)深度优先生成树( D)广度优先生成树26、一个问题可用动态规划算法或贪心算法求解的关键特征是问题的(B)。( A)重叠子问题(

7、B)最优子结构性质(C)贪心选择性质( D)定义最优解27、下列算法中不能解决0/1背包问题的是(A)( A)贪心法( B)动态规划(C)回溯法( D)分支限界法28、下面问题( B)不能使用贪心法解决。( A)单源最短路径问题( B) N 皇后问题( C)最小生成树问题( D)背包问题29、矩阵连乘问题的算法可由(B)设计实现。( A)分支界限算法( B)动态规划算法( C)贪心算法( D)回溯算法30、贪心算法与动态规划算法的主要区别是(B)。( A)最优子结构( B)贪心选择性质( C)构造最优解( D)定义最优解二、简答题1. 算法重要特性是什么?2. 算法分析的目的是什么?3. 算法

8、的时间复杂性与问题的什么因素相关?4. 算法的渐进时间复杂性的含义?5. 最坏情况下的时间复杂性和平均时间复杂性有什么不同?6. 简述二分检索(折半查找)算法的基本过程。7. 背包问题的目标函数和贪心算法最优化量度相同吗?8. 采用回溯法求解的问题,其解如何表示?有什么规定?9. 回溯法的搜索特点是什么?10. n 皇后问题回溯算法的判别函数place 的基本流程是什么?11. 为什么用分治法设计的算法一般有递归调用?12. 为什么要分析最坏情况下的算法时间复杂性?13. 简述渐进时间复杂性上界的定义。14. 二分检索算法最多的比较次数?15. 快速排序算法最坏情况下需要多少次比较运算?16.

9、 贪心算法的基本思想?17. 回溯法的解( x1,x 2,xn)的隐约束一般指什么?18. 阐述合并排序的分治思路。19. 快速排序的基本思想是什么。20. 什么是直接递归和间接递归?消除递归一般要用到什么数据结构?21. 试述分治法的基本思想。22. 设计动态规划算法有哪些主要步骤?23. 分治法与动态规划法的异同?24. 备忘录方法和动态规划算法相比有何异同?简述之。参考答案:1. 输入、输出、确定性、有限性、可实现性。2. 分析算法占用计算机资源的情况,对算法做出比较和评价,设计出更好的算法。3.算法的时间复杂性与问题的规模相关,是问题大小n 的函数。4当问题的规模n 趋向无穷大时,影响

10、算法效率的重要因素是T(n) 的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n) 的数量级 ( 阶 ) 评价算法。时间复杂度T(n)的数量级 ( 阶 ) 称为渐进时间复杂性。5.最坏情况下的时间复杂性和平均时间复杂性考察的是n 固定时,不同输入实例下的算法所耗时间。最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max T(n ,I) , IDn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n) = P(I)T(n ,I) I Dn6.设输入是一个按非降次序排列的元素表Ai : j 和 x,选取 A(i+j)/2与 x 比较,如果A(i+j)

11、/2=x,则返回 (i+j)/2,如果 A(i+j)/2<x,则 Ai : (i+j)/2-1找 x,否则在A (i+j)/2+1:j 找 x。上述过程被反复递归调用。7.不相同。目标函数:获得最大利润。最优量度:最大利润/ 重量比。8. 问题的解可以表示为 n 元组:( x1,x 2,xn),xi Si , Si 为有穷集合, xi Si , ( x1,x 2,xn)具备完备性,即(x1,x 2,xn)是合理的,则(x1,x 2,xi ) (i<n)一定合理。9.在解空间树上跳跃式地深度优先搜索,即用判定函数考察xk 的取值,如果xk 是合理的就搜索xk 为根节点的子树,如果xk

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

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

14、,数据序列被此记录分成两部分。所有关键字比该记录关键字小的放在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一次快速排序。之后重复上述过程,直到每一部分内只有一个记录为止。20. 在定义一个过程或者函数的时候又出现了调用本过程或者函数的成分,既调用它自己本身,这称为直接递归。如果过程或者函数 P 调用过程或者函数 Q,Q又调用 P,这个称为间接递归。消除递归一般要用到栈这种数据结构。21. 分治法的基本思想是将一个规模为 n的问题分解为 k个规模较小的子问题,这些子问题互相独立且与原问题相同。 递归地解这些子问题, 然后将各个子问题的解合并得到原问题的解。22. 设计动态规划算法的主要步骤为:( 1)找出最优解的性质,并刻划其结构特征。 ( 2)递归地定义最优值。 ( 3)以自底向上的方式计算出最优值。 ( 4)根据计算最优值时得到的信

温馨提示

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

评论

0/150

提交评论