一、选择题
1、衡量一个算法好坏得标准就是( C )。
(A)运行速度快 (B)占用空间少 (C)时间复杂度低 (D)代码短
2、记号O得定义正确得就是(A)。
(A)O(g(n)) ={ f(n) | 存在正常数c与n0使得对所有nn0有:0 f(n) cg(n) }; (B)O(g(n))= { f(n) | 存在正常数c与n0使得对所有nn0有:0 cg(n) f(n) };
(C)O(g(n))={ f(n) | 对于任何正常数c>0,存在正数与n0 >0使得对所有nn0
有:0 f(n)<cg(n) };
(D)O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数与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)棋盘覆盖问题(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)回溯法
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 )不能使用贪心法解决。
(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、回溯法在问题得解空间树中,按( 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)重叠子问题 (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.算法得时间复杂性与问题得什么因素相关?
4.算法得渐进时间复杂性得含义?
5.最坏情况下得时间复杂性与平均时间复杂性有什么不同?
6.简述二分检索(折半查)算法得基本过程。
7.背包问题得目标函数与贪心算法最优化量度相同吗?
8.采用回溯法求解得问题,其解如何表示?有什么规定?
9.回溯法得搜索特点就是什么?
10.n皇后问题回溯算法得判别函数place得基本流程就是什么?
11.为什么用分治法设计得算法一般有递归调用?
12.为什么要分析最坏情况下得算法时间复杂性?
13.简述渐进时间复杂性上界得定义。
14.二分检索算法最多得比较次数?
15.快速排序算法最坏情况下需要多少次比较运算?
16.贪心算法得基本思想?
17.回溯法得解(x1,x2,……xn)得隐约束一般指什么?
18.阐述合并排序得分治思路。
19.快速排序得基本思想就是什么。
20.什么就是直接递归与间接递归?消除递归一般要用到什么数据结构?
21.试述分治法得基本思想。
22.设计动态规划算法有哪些主要步骤?
23.分治法与动态规划法得异同?
24.备忘录方法与动态规划算法相比有何异同?简述之。
参考答案:
1、输入、输出、确定性、有限性、可实现性。
2、分析算法占用计算机资源得情况,对算法做出比较与评价,设计出更好得算法。
3、算法得时间复杂性与问题得规模相关,就是问题大小n得函数。
4.当问题得规模n趋向无穷大时,影响算法效率得重要因素就是T(n)得数量级,而其她因素
仅就是使时间复杂度相差常数倍,因此可以用T(n)得数量级(阶)评价算法。时间复杂度T(n)得数量级(阶)称为渐进时间复杂性。
5、最坏情况下得时间复杂性与平均时间复杂性考察得就是n固定时,不同输入实例下得算法所耗时间。最坏情况下得时间复杂性取得输入实例中最大得时间复杂度: W(n) = max{ T(n,I) } ,I∈Dn
平均时间复杂性就是所有输入实例得处理时间与各自概率得乘积与:
A(n) =∑P(I)T(n,I) I∈Dn
6、设输入就是一个按非降次序排列得元素表A[i:j]与x,选取A[(i+j)/2]与x比较,
如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]<x,则A[i:(i+j)/2-1]x,否则在A[ (i+j)/2+1:j] x。上述过程被反复递归调用。
7、不相同。目标函数:获得最大利润。最优量度:最大利润/重量比。
8、问题得解可以表示为n元组:(x1,x2,……x n),xi∈Si, Si为有穷集合,x i∈S i, (x1,x2,……
x n)具备完备性,即(x1,x2,……x n)就是合理得,则(x1,x2,……x i)(i<n)一定合理。
9、在解空间树上跳跃式地深度优先搜索,即用判定函数考察x[k]得取值,如果x[k]就是合理得就搜索x[k]为根节点得子树,如果x[k]取完了所有得值,便回溯到x[k-1]。10、将第K行得皇后分别与前k-1行得皇后比较,瞧就是否与它们相容,如果不相容就返回f
alse,测试完毕则返回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、最坏情况下快速排序退化成冒泡排序,需要比较n2次。
16、就是一种依据最优化量度依次选择输入得分级处理方法。基本思路就是:首先根据题意,
选取一种量度标准;然后按这种量度标准对这n个输入排序,依次选择输入量加入部分解中。如果当前这个输入量得加入,不满足约束条件,则不把此输入加到这部分解中。
17、回溯法得解(x1,x2,……x n)得隐约束一般指个元素之间应满足得某种关系。
18、讲数组一分为二,分别对每个集合单独排序,然后将已排序得两个序列归并成一个含n个
元素得分好类得序列。如果分割后子问题还很大,则继续分治,直到一个元素。
19、快速排序得基本思想就是在待排序得N个记录中任意取一个记录,把该记录放在最终位置
后,数据序列被此记录分成两部分。所有关键字比该记录关键字小得放在前一部分,所有
比它大得放置在后一部分,并把该记录排在这两部分得中间,这个过程称作一次快速排序。
之后重复上述过程,直到每一部分内只有一个记录为止。
20、在定义一个过程或者函数得时候又出现了调用本过程或者函数得成分,既调用它自己本身,这称为直接递归。如果过程或者函数P调用过程或者函数Q,Q又调用P,这个称为间接递归。消除递归一般要用到栈这种数据结构。
21、分治法得基本思想就是将一个规模为n得问题分解为k个规模较小得子问题,这些子问题互
相独立且与原问题相同。递归地解这些子问题,然后将各个子问题得解合并得到原问题得解。
22、设计动态规划算法得主要步骤为:
(1)出最优解得性质,并刻划其结构特征。(2)递归地定义最优值。(3)以自底向上得方式
计算出最优值。(4)根据计算最优值时得到得信息,构造最优解。
23、分治法与动态规划法得相同点就是:将待求解得问题分解成若干个子问题,先求解子问题,然后从这些子问题得解得到原问题得解。
两者得不同点就是:适合于用动态规划法求解得问题,经分解得到得子问题往往不就是互相独立得。而用分治法求解得问题,经分解得到得子问题往往就是互相独立得。
24、备忘录方法就是动态规划算法得变形。与动态规划算法一样,备忘录方法用表格保存已解决得子问题得答案,在下次需要解此问题时,只要简单地查瞧该子问题得解答,而不必重新计算。
备忘录方法与动态规划算法不同得就是,备忘录方法得递归方式就是自顶向下得,而动态规划算法则就
是自底向上递归得。因此,备忘录方法得控制结构与直接递归方法得控制结构相同,区别在于备忘录方法为每个解过得子问题建立了备忘录以备需要时查瞧,避免了相同得子问题得重复求解,而直接递归方法没有此功能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论