算法试卷(示例)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、判断题(10分,共5题)
1、近似算法解最优化问题时需保证得到的结果在一定误差之内。

( √ )
2、剪枝函数就是约束函数。

( × ) 3、蒙特卡罗方法可以精确得到状态空间树上实际生成的结点数。

( × )
4、渐近时间复杂度使得可以在数量级上估计一个算法的执行时间。

( √ )
5、一般称用于确定n 个元素的排列满足某些性质的状态空间树为排列树。

( √ )
二、填空题(20分,共10空)
1、辗转相除法又称 欧几里德算法 ,是一种求两个整数的 最大公约数 的算法。

2、很多情况下,可以通过考察一个程序中 关键操作 的执行次数,来估算算法的渐近时间复杂度。

3、如果f(n)=a m n m
+a m-1n m-1
+…+a 1
n+a 0
是m 次多项式,且a m
>0,则f(n)=O( n m
)。

4、贪心法在算法的每一步上根据 最优量度标准 选择分量,只需保证形成的部分解不违反约束条件,最终得到的n-元组必定是 最优解 。

5、Cook 定理表明 可满足性问题 是NP 完全的。

若问题Q ∈NP 且Q 是 NP 难度 的,则称Q 是NP 完全的。

6、信息安全的目标是保护信息的机密性、 完整性 ,并具有 抗否认性 和可用性。

三、选择题(10分,共5题)
1、二分搜索算法的执行过程可以用一个( B )来描述。

A .哈夫曼树
B .二叉判定树
C .堆栈
D .队列
2、实时系统最关心系统( C )情况下的时间复杂度。

A .最好
B .平均
C .最坏
D .所有
3、下面关于备忘录方法的说法中( A )是错误的。

A .备忘录方法自底向上求解。

B .备忘录方法为每个已解过的子问题建立备忘录进行保存。

C .备忘录方法是动态规划法的变形。

D .当只有部分子问题需要求解时,选用备忘录方法较好。

4、若已知RSA 算法中的公开密钥为{e,n},私人密钥为{d,n},M 为明文分组,C 是M 对应的密文。

则加密公式为( A ) A .C=M e mod n
B .C=M d mod n
C .M=C e mod n
D .M=C d mod n
5、下面( D )不是针对RSA 算法的攻击方式。

A .大整数分解 B .时间攻击 C .中间人攻击 D .数字认证
四、问答题(50分,共5题)
1、(1)请写出分治法的算法思想。

(2)分治法求解的问题通常得到一个递归算法,若算法的执行时间可以表
示为T(n)=aT(n/b)+cn k ,T(1)=c ,请给出该算法渐近时间复杂度的解。

答:(1)分治法的算法思想是1)将一个难以直接求解的复杂问题分解成若干个规模较小、相互独立,但类型相同的子问题。

2)如果子问题还比较复杂而不能直接求解,还可以继续细分,直到子问题足够小,能够直接求解为止。

3)最后,再通过组合子问题的解,来得到原始问题的完整解。

(2)log ()()(log )()b a k
k k
k k n a b T n n n a b
n a b ⎧Θ>⎪=Θ=⎨⎪Θ<⎩
若若若
2、请画出W={1,3,5,7,8,10}的三路最佳合并树。

答:因为n=6,k=3,(n-1)%(k-1)=1,需补齐一个虚结点。

3、下图所示的AOE 网中
(1)求每个事件(结点)i 可能的最早发生时间earliest(i)和允许的最迟发生时间latest(i)。

(2)求从源点0到汇点5的关键路径长度。

(3)找出图中所有的关键活动。

(4)写出图中所有的关键路径。

解:(1)
(2)关键路径长度:9
(3)关键活动:<0,1><1,3><1,4><3,5><4,5>
(4)关键路径:(0,1,3,5)和(0,1,4,5)
4、请用启发式方法计算0/1背包问题。

背包载重为M=6,有4件物品的重量为(w0,w1,w2,w3)=(3.3,2,1.2,5),放入背包的收益分别为(p0,p1,p2,p3)=(4,5,6,1)。

背包最大收益是多少?最优解是什么?
(注:最优解中的解分量x i表示物品i放入背包的比例。


解:ProfLeft(0)=16,ProfLeft(1)=12,ProfLeft(2)=7,ProfLeft(3)=1,ProfLeft (4)=0。

物品0,1放入背包总重量5.5<M=6,收益9,得一可行解L=9。

S0={(0,0),(3.3,4)} x0=0
S1={(2,5),(5.3,9)} x1=1
S2={(3.2,11)} x2=1
S3={(3.2,11)} x2=0
所以最大收益是11,最优解是(0,1,1,0)。

5、设有n=4个正数的集合W={w0,w1,w2,w3}=(3,5,8,10)和整数M=13,求W中元素之和等于M的所有子集。

画出对于这一实例由SumOfSub算法实际生成的那部分状态空间树,并给出所有可行解。

解:(1)实际生成的状态空间树:
(2)可行解有:(1,0,0,1)和(0,1,1,0)
五、算法设计题(10分)
1、请利用快速排序算法的思想,用分治法设计一个算法选出n个元素中第k
小的元素。

请尽可能的说清楚你的算法,不用给出具体程序。

答:每一步根据一个随机选取的元素对输入数组进行递归划分,只对含有第
k小元素的那部分子数组进行递归操作——即寻找x[k]位置的所有者。

相关文档
最新文档