当前位置:文档之家› 算法复习试题

算法复习试题

算法复习试题(仅供参考)2009一、填空题(每空1分,共15分)1、一个正确的算法应当具有五个特性:(有穷性)、(确定性)、( 能行性 )、 输入和输出。

2、算法的时间复杂性是算法运行所需要的( 计算机资源 )的量,这个量只依赖于 (求解问题的规模 )、(具体的输入数据)和( 算法本身的设计 )。

3、函数的渐进表达式为( T(N) ),函数错误!未找到引用源。

的渐进表达式为( 3n 错误!未找到引用源。

)。

4、快速排序和归并排序策略上是相同的,都是用的( 递归与分治 ) 算法。

5、对于问题Q ,若满足( Q 是NP 困难的 )、( Q ∈NP )则称Q 为NP 完全的。

6、要求出一个问题所有的可行解,一般要用( 回溯 )算法。

7、通常能用动态规划法求解的问题应具备(最优子结构)和(或者是重叠字问题)相似 )的性质。

二、选择题(每小题2分,共10分)(D ) 1、 概率算法是一种非确定性地选择下一计算步骤的方法,( )算法主要目的是消除算法所需计算时间对输入实例的依赖。

A .数值概率算法 B .蒙特卡罗算法 C .拉斯维加斯算法 D .舍伍得算法 ( B ) 2、 ASCII 码压缩方法经过两级压缩之后可以减少( )的存储空间。

A .62.5% B .56.25% C .50% D .65% ( A ) 3、 P 类问题与NP 类问题的关系是( ) A .包含于 B .包含 C .属于 D .等于( C ) 4、以下关于判定问题难易处理的叙述中正确的是( )。

A .可以由多项式时间算法求解的问题是难处理的 B .需要超过多项式时间算法求解的问题是易处理的 C .可以由多项式时间算法求解的问题是易处理的D .需要超过多项式时间算法求解的问题是不能处理的(C ) 5、对于含有n 个元素的排列树问题,最坏情况下计算时间复杂性为( )。

A .2n+1-1 B .∑=ni i n 1!/! C .n!D .2n三、计算题(每小题5分,共20分)(注意:要求写出计算过程)1、设某算法的时间复杂度为O(n 3)。

在某台计算机上实现并完成该算法的时间为t 秒。

现有另外一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t 秒内能解输入规模多大的问题?解:设在本台计算机上的速度为V ,设在另一台计算机上的输入规模为X 由 计算时间都为t 秒有 n 3/.V=X 3/64V 可以求得X=4n2、按照渐近阶从低到高的顺序排列下列表达式:4n 2,logn ,3n ,n!,n 2/3 解:由低到高为: n 2/3 log n 4n 2 3n n!3、求解递归方程⎩⎨⎧+==2)3/(2)(1)1(nn T n T T 解:D(n)=n 2 且a=2 D(3)=32=9 a<D(b) 所以T(n)= ○(n 2) 4、设MC(x)是解某个判定问题的蒙特卡罗算法,且是一个p 正确的偏真算法。

现有如下算法MC2(x),试分析该算法的正确率。

bool MC2(x){if(MC(x)) return true; else return MC(x); }解:蒙特卡罗算法的特点是只要有一次调用为真,结果就为真,所以该算法的正确率为:1-(1-p )N N 为调用的次数四、问答及求解题(每小题10分,共40分)1、 什么是贪心选择性质?(2分)贪心算法与动态规划算法有什么共同点?(4分)又有什么区别?(4分)答:所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优解的选择,即贪心选择来达到。

共同点:都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。

区别:① 动态规划每步所作出的选择依赖于相关子问题的解,因而只有在解出相关子问题之后才能做出选择,而在贪心算法中,仅在当前状态下做出最好选择,所做的贪心选择可以依赖于以往所做过的选择,但决不依赖于将来所做的选择,也不依懒于子问题的解。

②动态规划以自底向上的方式解各子问题,而贪心算法则以自顶向下的方式进行,以迭代的方式做出相继的选择,而且每一步之后将所求问题简化为规模更小的子问题。

2、设有n=2k个运动员要进行循环赛,现设计一个满足以下要求的比赛日程表:①每个选手必须与其他n-1名选手比赛各一次;②每个选手一天至多只能赛一次;③循环赛要在最短时间内完成。

(1)如果n=2k,循环赛最少需要进行(n-1 )天;(2分)如果n≠2k,循环赛最少需要进行(n )天。

(2分)(2)当n=23=8时,请画出循环赛日程表:(6分)3、在字符串匹配中,模式串为“acacdacb”,若采用KMP算法,①求NEXT值;(8分)②若某趟不匹配的情形如下所示,则指针i,j如何移动?(2分)i正文:…b c a c a c b a b a a b a a …模式: a c a c d a c bj解:①②指针i不动,指针j退回到NEXT[ j]的位置,这里退回到3的位置,即模式向右移动3个位置4、有字符串acbcbacbcacbc,若采用LZW算法压缩,得到的压缩码是什么?(2分)要求写出字典。

(8分)解:压缩码为:{1,3,2,5,4,6,8}字典如下::五、算法设计题(15分)在8×8的国际象棋棋盘上,只摆5个皇后,每个皇后能控制它所在的行、列和通过它所在的正方形的两条对角线,要使这5个皇后能够控制棋盘上的每一个格子(控制的格子可以重复),但皇后之间不能互相攻击。

下面是一种可能的摆法。

请设计一个算法,求出所有可能的摆放。

请用自然语言描解法一:满足题目要求的八皇后问题算法如下:(用的是书上的Las Vegas算法)自然与描述如下:对n后问题,Las Vegas算法是随机地产生一组王后放置的位置。

若成功了,便找到了一个解;若失败了,就整个重来,再随机产生另外一组王后的位置。

这样作,直至找到解伪代码如下:int queensLV(int rec[]){int k,i=1,found=1; //第i个皇后放在第k列while(i<=N && found){found=0;for(k=1;k<=N && !found; k++){ //准备在当前这一行放置皇后rec[i]=k;if(place(rec,i)) //判断该位置能否放置皇后if(rand()%2==0) found=1;//即便能放,也还要进行随机处理,只有50%的机会}if (found) i++; //放下一行}return found; //如果found==1,表示找到一种方案}解法二:回溯法(最好用这种方法)自然语言描述:⏹在棋盘的第一行的任意位置安放第一只皇后。

⏹紧接着,我们就来放第二行,第二行的安放就要受一些限制了,因为与第一行的皇后在同一列或同一对角线的位置上是不能安放皇后的,接下来是第三行,……,⏹或许我们会遇到这种情况:在摆到某一行的时候,无论皇后摆放在什么位置,她都会被其它行的皇后吃掉,这时就必须要回溯,将前面的皇后重新摆放,伪代码如下:(注释可以不写)数据结构说明:⏹数组rec[n]表示棋盘。

若rec[i] = j,1≤i, j≤n,表示棋盘的第i行第j列上有皇后。

⏹数组C[j] = 1表示第j列上无皇后,1≤j≤n。

⏹数组D[k] = 1表示第k条下行(↘)对角线上无皇后。

数组U[k] = 1表示第k条上行(↗)对角线上无皇后。

⏹Record(s, j) { k = s – j + n;rec[s] = j; C[j] = 0; D[s + j – 1] = 0; U[k] = 0; }⏹Move-Off(s, j) {k = s – j + n;rec[s] = 0; C[j] = 1; D[s + j – 1] = 1; U[k] = 1; }⏹Safe(s, j) {k = s – j + n;if (C[j] && U[k] && D[s + j – 1]) return trueelse return false; }一、填空题(每空1分,共15分)1、算法是由若干条指令组成的( )序列,且满足( )、( )、输入和输出这四条性质。

2、一个算法的时空性能是指该算法的( )复杂性和( )复杂性,前者是算法包含的计算量,后者是算法需要的存储量。

3、函数3n 3+10n 的渐进表达式为(),函数logn 3的渐进表达式为()。

4、贪心法得到的解()(一定/不一定)是最优解,用回溯法得到的解( )(一定/不一定)是最优解。

5、通常能用动态规划法求解的问题应具备( )和( )的性质。

6、快速排序和归并排序策略上是相同的,都是用的( ) 算法。

7、计算机产生的随机数都是有周期的,所以被称为( )随机数。

8、计算模型RAM 、RASP 以及TM 在计算能力上是( )的,在计算速度上是( )的。

二、判断题(每小题2分,共10分)( ) 1、 用贪心法求0-1背包可以获得最优解。

( ) 2、 n 个矩阵连乘积的计算顺序问题同构于凸(n+1)边形的三角剖分问题。

( ) 3、 分支限界法一般是以深度优先的方式搜索解空间树。

( ) 4、 回溯法是最常用的解题方法,有“通用的解题法”之称。

( )5、 可以由多项式时间算法求解的问题是难处理的。

三、计算题(共20分)(注意:要求写出计算过程)1、 对于下面的各组函数()()f ng n 和 ,确定()(())()=(())f n Og n f n g n =Ω或,()=(())f n g n Θ或并简述理由。

(每小题5分,共10分)(1)3()log ,()4log 10f n n g n n ==+ (2)()3,()5n n f n g n ==2、假设某算法在输入规模为n 时的计算时间为()32nT n =⨯。

在某台计算机上实现并完成该算法的时间为t 秒。

现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法3、分析下列程序段所代表的算法的时间复杂性:(5分)四、问答题(每题5分,共10分)1、什么是概率算法?试说说舍伍德、拉斯维加斯、蒙特卡罗算法各自的特点。

2、什么是NP 问题?什么是NP 完全问题?二者有何关系?五、求解题(每题10分,共30分)(注意:要求给出求解过程) 1、设多级图G =(V,E),V ={V1,V2,V3,V4,V5}, V1={1},V2={2,3,4},V3={5,6},V4={7,8,9}, V5={10}。

其耗费如右表所示。

请用动态规划法 求从顶点1到顶点10的最小耗费路径。

2、采用快速排序对序列E,X,A,M,P,L,F 按照字母顺序排序,请写出每趟排序后的结果(10分)3、有无向图如下所示,请用Prim 算法求出它的最小生成树,要求写出求解过程。

相关主题