一、选择
1.算法要对异常情况进行适当的处理,就是算法的()。
A、正确性
B、可用性
C、健壮性
D、可行性
2.( )指的是算法中描述的操作都可以通过已经实现的基本操作运算有限次实现。
A、可靠性
B、正确性
C、有效性
D、可行性
3.算法的( )指的是对于每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行。
A. 确定性 B、有穷性 C、健壮性 D、可行性
4、( )指的是算法中描述的操作都可以通过已经实现的基本操作运算有限次实现。
A.正确性 B.可用性 C.健壮性 D.可行性
5、当上下限表达式相等时,我们使用下列哪种表示法来描述算法代价?( )
A.大O表示法 B.大Ω表示法
C.Θ表示法 D.小o表示法
6、对于下列各组f(n)和g(n),下面( )答案满足f(n)=O(g(n))。
A. f(n)=logn2,g(n)=√n B. f(n)=n2, g(n)=3nlogn
C. f(n)= 2n ,g(n)= n2log3n D. f(n)=n, g(n)= logn3
7、对于下列各组f(n)和g(n),下面( )答案满足f(n)=O(g(n))。
A. f(n)=2n ,g(n)= n2log3n B. f(n)=n+2nlog2n, g(n)=n √n
C. f(n)=n! ,g(n)= 5n D. f(n)=10nlogn, g(n)=50nloglogn
8、对于下列各组f(n)和g(n),下面( )答案满足f(n)=O(g(n))。
A. f(n)=n2/2+3n,g(n)=2n+3 B. f(n)=n2, g(n)=n+2logn
C. f(n)= log3n ,g(n)= 3nlog3n D. f(n)=n, g(n)= logn2
9、KMP算法中,设模式T=“abaabca”,则next[5](下标从0开始)值为( )。
A. 2 B. 0 C. 1 D. -1
10、在棋盘覆盖问题中,对于2k×2k的特殊棋盘(有一个特殊方块),所需的L型骨牌的个数是( )。
A. (4k-1)/3 B. 2k/3 C. 4k D. 2k
11、( )不是利用减治策略实现的算法。
A. 折半查找 B. 堆排序 C. 选择排序 D. 直接插入排序
12、解决问题是按一定顺序(从前向后或从后向前等)、一定的策略,只需考虑当前局部信息就能做出决策,即所谓局部最优就是全局最优。
A. 回溯法 B. 动态规划法 C. 贪心算法 D. 限界剪枝法
13、设有10个活动等待安排,其中每个活动都要求使用同一场地,而在同一时间内只有一个活动能用这一场地。每个活动i要求使用该资源的起始时间si和结束时间fi 如下表所示,该场地最多能安排( )个活动。
A. 3 B. 4 C. 5 D.6
14、对于含有n个元素的排列树问题,最坏情况下其解空间的叶结点数目为( )。
A. O(n2) B. O(n3) C. O(2n) D. O(n!)
15、关于回溯算法和限界剪枝法,以下( )是不正确描述。
A. 回溯法中,每个活结点只有一次机会成为扩展结点
B. 限界剪枝法中,活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,那些导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子加入活点表中
C. 回潮法采用深度优先的结点生成策略
D. 分支限界法采用广度优先或最小耗费优先(最大效益优先)的结点生成策略
16、给定两个字符串A和B,A是B的一个子串吗?( )
计算问题 B. 判定问题 C. 复杂问题 D. 简单问题
17、使用分治法求解不需要满足的条件是( ) 。
A. 子问题必须是一样的 B. 子问题不能够重复
C. 子问题的解可以合并 D. 原问题和子问题使用相同的方法解
18、应用减治技术实现选择问题的算法的平均时间性能为( )。
A. O(log2n) B. O(n) C. O(nlog2n) D. O(n2)
19、折半算法是利用( )实现的算法。
A. 减治策略 B. 蛮力法 C. 分治法 D. 贪心法
20、下列算法中通常以自底向上的方式求解最优解的是( )。
A. 蛮力法 B. 动态规划法 C. 贪心法 D. 回溯法
21、贪心算法与动态规划算法的主要区别是( )。
A. 最优子结构性质 B. 构造最优解
C. 贪心选择性质 D. 定义最优解
22、以下不是使用贪心法求解的是( )。
最小生成树问题 B.背包排序
C. 0-1背包问题 D.活动安排问题
23、用回溯法求解TSP问题的解空间树是( )。
A.排列树 B.子集树 C.红黑树 D.竞赛树
24、动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,主要差别()。
A、 子问题是否容易计算
B、 问题能否递归解决
C、 子问题是否相互独立
D、 是自顶向下还是自底向上解决问题
25、常见的两种分支限界法为( )
A. 广度优先分支限界法与深度优先分支限界法;
B. 队列式(FIFO)分支限界法与堆栈式分支限界法;
C. 排列树法与子集树法;
D. 队列式(FIFO)分支限界法与优先队列式分支限界法
26、算法的时间复杂度取决于( )。
A.问题的规模 B.待处理数据的初态
计算机的配置 D.A和B
27、回溯法搜索状态空间树是按照( )的顺序。
中序遍历 B.广度优先遍历 C.深度优先遍历 D.层次优先遍历
28、在回溯法中,一个正在产生儿子的结点称为()。
A、 死结点
B、 扩展结点
C、 活结点
D、叶结点
29、对于含有n个元素的子集树问题,最坏情况下其解空间的叶结点数目为( )。
A. O(n2) B. O(n3) C. O(2n) D. O(n!)
30、当所给的问题是确定n个元素满足某种性质的排列时,相应的解空间树称为排列树。排列树问题复杂性通常是()。
A、 O(n)
B、 O(n2)
C、 O(2n)
D、 O(n!)
31、求解稠密图的最小生成树适合用( )算法。
Dijkstra B.Floyed C.Prim D.Kruskal
32、用贪心算法求解活动安排问题的策略是( )。
A.最早开始时间 B.最早结束时间
活动用时时间最短 D.活动用时时间最长
33、汽车加油问题:一辆汽车加满油后可行驶nkm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。这个问题可以采用贪心方法求解,贪心选择策略是()。
A、 最近加油站优先
B、 最远加油站优先
C、 第一个加油站优先
中间加油站优先
34、 “一个问题是实际可计算的当且仅当它在图灵机上经过多项式步骤得到正确结果”,此论题称为( )。
A.图灵论题 B. NP问题
C. Cook论题 D. NPC问题
35、以下不属于NPC问题的是( )。
A.哈密顿回路问题 B. TSP问题
C. 汉诺塔问题 D.图着色问题
36、设M是定义一个判定问题的语言,如果NP中的每个语言都可以以多项式时间归约为M,则称M是( )。
A、 复杂类P
B、 复杂类NP
C、 NP难
D NPC
37、如果一个语言M是NP难的,同时属于NP类本身,则称M是( )。
A、 复杂类P
B、 复杂类NP
C、 NPC
D、 复杂问题
38、TSP问题的解空间树是( )。
A. 二叉排序树 B. 子集树 C. 排列树 D. 完全二叉树
39、以下是使用分治法求解的是( )。
A. 冒泡排序 B. 快速排序
C. 堆排序 D. 选择排序
40、下列( )问题不能用贪心法求解。
A. 霍夫曼编码问题 B. 单源最短路径问题
C. n皇后问题 D. 最小生成树问题
41、下列( )的搜索空间树为子集树。
A. 四皇后问题 B. TSP问题
C. 0-1背包问题 D. 批处理作业调度问题
42、分枝限界法在问题的解空间树中按( )策略,从根结点出发搜索解空间树。
A. 广度优先 B. 活结点优先 C.扩展结点优先 D. 深度优先
43、关于回溯法以下叙述中不正确的是( )。
A. 回溯法有“通用解题法”之称,它可以系统地搜索一个问题的所有解或任意解
B. 回溯法是一种既带系统性又带跳跃性的搜索算法
C. 回溯法需要借助队列这种结构来保存从根结点到当前扩展结点的路径
D. 回溯法在生成解空间的任一结点时先判断该结点是否可能包含问题的解,如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向祖先结点回溯
44、优先队列通常用以下( )数据结构来实现。
A.栈 B.堆 C.队列 D.二叉查找树
45、下列( )不属于NP类题。
A.TSP问题 B. 背包问题 C. 汉诺塔问题 D. 图的顶点覆盖问题
46、以多项式时间复杂性作为分界线将可计算问题分为易解问题和难解问题的是( )。
A.Turing论题 B. Cook论题 C. NP问题 D. NPC问题
二、判断题
1、算法要对异常情况进行适当的处理,就是算法的健壮性。
2、一个算法的时间用O符号表示时,总是采用最有价值的g(n)表示,称之为“紧凑下界”或“紧确下界”。
3、问题的计算时间下界为Ω(f(n)),则计算时间复杂性为O(f(n))的算法是最优算法。
4、算法分析是分析算法占用计算机资源的情况,即分析算法的时间复杂度。
5、算法是把人类找到的求解问题的方法,用算法要素过程化、形式化、机械化地表示出来。
6、设n为算法中的问题规模,通常用渐进符号Ω表示算法的执行时间与n之间的一种增长关系。
7、一个算法的时间用Ω符号表示时,总是采用最有价值的g(n)表示,称之为“紧凑下界”或“紧确下界”。
8、若c是正常数,则O(cf(n))=O(f(n))
9、实现分治策略的算法时,只能采用递归函数。
10、分治策略将求出的小规模的问题的解合并为一个更大规模的问题的解,自顶向下逐步求解原来问题。
11、折半查找、堆排序、假币问题等算法中均采用了减治策略。
12、要证明一个问题不能用贪心策略去解,一个简单方法就是对假设的贪心选择性质找出一个反例。
13、贪心算法不能对所有问题都得到整体最优解,所以,这类算法只有理论价值、没有实际意义。
14、一般而言,当一个问题的所有子问题都至少要解一次时,用动态规划算法比用备忘录方法好。
15、动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,主要差别是问题能否递归解决。
16、回溯法常用剪枝函数来减少对解空间树的搜索,剪枝函数包括约束函数和限界函数。
17、回溯法与图的深度优先遍历在实现上都是遵循深度优先,对已经访问过的顶点不再访问,所有顶点仅访问一次。
18、问题的解空间一般用树形式来组织,也称为解空间树。采用分支限界法时,通常要构造出解空间树,以便有效检索。
19、最优性原理指出,过程的最优序列有如下性质:无论过程的初始状态和初始决策是什么,决策都必须相对于初始决策所产生的状态构成一个最优决策序列。
20、回溯法适用于判定问题,但不适合优化问题。
21、动态规划法通常利用问题的最优子结构性质,以自顶向下的方式递归地从子问题的最优解逐步构造出整个问题的最优解。
22、回溯法中,一旦一个成为扩展结点,就无法再成为扩展结点。
23、在优先队列式分支限界法中,一旦有一个叶结点成为当前扩展结点,则可以断言该叶结点所相应的解即为最优解。此时可终止算法。
24、分支限界法的求解目标是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。
25、在优先队列式分支限界法中,一旦有一个叶结点成为当前扩展结点,则可以断言该叶结点所相应的解即为最优解。此时可终止算法。
26、堆的形状是一棵满二叉树。
27、利用分支限界法设计算法时,设计者已经用大脑自己构造好了问题的解空间,因此可以自底向上的递推方式求解。
28、尽管求解目标不同,分支界限法与回溯法在解空间树上的搜索方式类似,可以是深度优先或者广度优先。
29、动态规划法在搜索过程中根据一定规则自动构造并搜索解空间树,进而求解。
30、复杂类NP问题不确定是否存在多项式时间求解算法,但确定存在多项式时间验证算法。
31、一个语言L可以在多项式时间确定地验证当且仅当L可以在多项式时间内被确定地接受。
三、应用题
1.堆
1、判断(52,49,80,36,14,97,23,75)是否为堆?如果不是,请画出将其调整为大根堆的过程。
2.贪心算法
2、用贪心法求解如下背包问题的最优解:有6个物品,重量分别为(5,3,2,10,4,2),价值分别为(9,5,8,20,12,10),背包容量为20。写出求解过程。
3.动态规划
3、用动态规划法求两个字符串A=“acdfggh”和B=“cegdhgh”的最长公共子序列。写出求解过程。
4.三着色问题
4、对于如图所示的无向图G,利用回溯法求解三着色问题。要求画出搜索空间树,并给出一个可行解。
5.分支界限法
5、应用分支限界法求解0-1背包问题:有4个物品,重量分别为(6,5,4,2),价值分别为(48,30,22,10),背包容量W=12。请写出在解空间树上的搜索过程。