算法复习试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法复习试题(仅供参考)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 .2
n+1
-1 B .
∑=n
i 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=4n
2、按照渐近阶从低到高的顺序排列下列表达式:4n 2,logn ,3n ,n!,n 2/3 解:由低到高为: n 2/3 log n 4n 2 3n n!
3、求解递归方程⎩⎨
⎧
+==2
)3/(2)(1)1(n
n T n T T 解:D(n)=n 2 且a=2 D(3)=32=9 a 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 b j 解:① ②指针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,表示找到一种方案 }