不区分三种操作,则每个操作的最坏运行时间为<),平摊运行时间为<)。
5.三种平摊分析的方法分别为<)、<)、<)。
6.四后问题的搜索空间为<)树;0-1背包问题的搜索空间为<)树;巡回售货员问题的搜索空间为<)树。
7.<)法的求解目标是找出解空间树中满足约束条件的所有解,而<)法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。
8.回溯法一般以<)优先的方式搜索解空间树,而分支限界法则一般以<)优先或以最小耗费优先的方式搜索解空间树。
二、单项选择题(10分>
1.
下列关于排序算法的叙述,不正确的是?
<)
A>堆排序的最差情形运行时间为Θ(nlgn>B>快速排序平均情形运行时间为Θ(nlgn>
C>任何排序算法的最差情形运行时间都不可能比Ω(nlgn>更小D>插入排序在最好情形下的运行时间为Θ(n>
2.对于课堂讲解的线性时间内找第i小的元素的算法,<)
下列叙述中不正确的是?
A>算法第一步中可以按每五个元素一组找中位数;B>算法第一步中可以按每七个元素一组找中位数;B>算法第一步中不能按每三个元素一组找中位数;D>如果要求的n个元素的中位数,则中位数一定是第一步中找到的中位数中的某一个。
3.主方法可以求解满足形如下式的递推方程,<)
则下列关于方程中的约束中不准确的是?
A>对于系数a,必须满足a≥1B>对于系数b,必须满足b>1C>若对于常数ε>0,f(n>=O(nlogba-ε>,则T(n>=Θ(nlogba>
D>若f(n>=O(nlogba>,则T(n>=Θ(nlogbalogn>
4.下列哪些问题不能用贪心法求解?
<)
A>霍夫曼编码问题B>单源最短路径问题
C>0-1背包问题D>最小生成树问题
5.可合并堆上可以不包含下列哪个操作?
<)
A>DECREASE-KEY(H,x,k>B>UNION(H1,H2>
C>INSERT(H,x>D>EXTRACT-MIN(H>
6.不同堆上插入操作最差情形下的开销或平摊开销,<)
对二叉堆、二项堆和斐波那契堆,下列选项中描述错误的是?
A>二叉堆为Θ(lgn>B>二项堆为O(lgn>
C>斐波那契堆为Θ(1>D>三种堆的开销都是Θ(lgn>
7.关于网络流的割,下列选项中错误的是?
<)
割(S,T>是流网络G=(V,E>的一个划分,其中s∈S,t∈T。
如果f是G上的流,那么流经割的净流量为f(S,T>,割(S,T>上的容量定义为c(S,T>。
A>|f|≤c(S,T>B>f(S,T>=|f|
C>f(s,V-s>=|f|D>f(S-s,V>=|f|
8.下列随机算法一定有解但解不一定正确的是?
<)
A>SherwoodB>LasVegasC>MonteCarloD>三者都不是
9.在快速排序算法中引入随机过程的主要目的是什么?
<)
A>改善确定性算法的平均运行时间
B>保证算法总能在O(nlgn>时间内结束
C>避免了算法最坏情况下的发生
D>改善了确定性算法最坏情形下的平均运行时间
10.用MonteCarlo方法估计四后问题回溯算法的效率。
<)
五次实验结果分别为<1,4,2>、<2,4,1,3>、<4,2>、<3,1,4,2>、<1,3>,则解空间中的结点数估计为?
A>16B>16.2C>17D>16.5
三、社会名流(20分>
在n个人中,一个被所有人知道但却不知道别人的人,被定义为社会名流。
现在的问题是如果存在,试找出该社会名流。
你可以使用的唯一方式是询问:
“请问你知道那个人吗?
”请给出提问次数为O(n>的算法,写出伪代码,分析算法的正确性,并给出算法运行时间的精确分析<即O(n>中隐藏的系数)。
<提示:
当你问A是否认识B时,如果A认识B,则A不是社会名流;如果A不认识B,则B不是社会名流)
四、地板覆盖<20分)
用2*1的地板块覆盖3*n的地面有多少种方案?
如下图是一个覆盖的例子,函数fn可用于求解这个问题,请说明fn算法的正确性,并说明算法运行时间的上界和下界。
intfn(intn>{
if(n%2==1>return0。
int[]f=newint[n+1]。
f[0]=1。
for(inti=2。
i<=n。
i+=2>{
f[i]=f[i-2]*3。
for(intj=i-4。
j>=0。
j-=2>
f[i]+=f[j]*2。
}
returnf[n]。
}
五、田忌赛马<20分)
你一定听过田忌赛马的故事吧?
如果3匹马变成n匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛。
赢一局,田忌可以得到200两银子,输一局,田忌就要输掉200两银子。
已知国王和田忌的所有马的奔跑速度,并且所有马奔跑的速度均不相同,现已经对两人的马分别从快到慢排好序,请设计一个算法,帮助田忌赢得最多的银子。
写出伪代码,证明算法的正确性,并分析算法的复杂度。
<提示:
可以设计一个贪心策略的算法,面对国王每匹顺序出场的马,如果田忌的马快,就派最快的出场;否则派最慢的马出场)
六、<20分)给出n项作业
,对应每项作业有一个运行时间
,在m个处理器上调度这些作业,使完成的时间最小。
完成的时间定义为在所有的处理器中运行时间最长的处理器运行的时间。
采用如下的近似算法:
即,按照原始给定的作业顺序:
,把每一项作业分配给当前情况下最近可用的那个处理器,使该作业尽可能早被处理<其它没有任何约束)
1.试证明该算法的近似度为
。
<10分)
2.构造边界情况,说明这个界是紧的。
<10分)
<提示:
)