山东科技大学2018年算法设计与分析考试题真题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题的最优解包含着其子问题的最优解,这种性质称为最优子结构性质。……【2分】
递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次。
这种性质称为子问题的重叠性质。……………………………………………………【2分】
2.动态规划基本步骤:
(1)
(2)
(3)
(4)
找出最优解的性质,并刻画其结构特征。
60
4
4040503530150130175
e.
f.
(1,1,0,1,1, 1
,0)
3
60
4040503510150130170.71
(1,1,0,1,1,0, 4)
7
35
g.40405030160
(1,1,0,1,0,1,0)
h. 4040353010150140
(1,1,0,0,1,1, 2)
146.85
if (m< a[m]) r = m-1; else l = m+1;
}
return -1;
}…………………………………………………………………………………………【5分】
四、对于动态规划算法,试解答:(1题4分,2题6分,3题10分,共20分)
1.动态规划算法的两个基本要素:最优子结构性质、子问题的重叠性质…………【2分】
1.动态规划算法的两个基本要素,每个要素的含义是什么?
2.写出动态规划算法解题的基本步骤。
3.0-1背包问题:给定n个物品和一个背包。物品i的重量为wi,价值为vi,背包容量为c。问如何选择装入
背包中的物品,使得装入背包的物品的价值最大?在装入背包时,每种物品i只有两种选择,装入或者不装入,既
不能装入多次,也不能只装入一部分。
(1)确定性:算法的每一种运算必须有确切的定义,无二义性。…………………【1分】
(2)有限性:算法中每条指令的执行次数、每条指令的执行时间都是有限的。…【1分】
(3)输入:有0个或者多个输入。………………………………………………………【1分】
(4)输出:有1个或者多个输出。………………………………………………………【1分】
一、简答题(1题4分,2题4分,3题6分,共14分)
1.什么是算法?什么是程序?。
2.算法的特点是什么?
3.给出算法复杂度计量符号O和的定义。
二、算法复杂度计算(10分)
已知某算法耗时为T(n),且满足如下递归方程
T(n)O(1)
n1
n>1
2T(n/ 2)O(n)
试计算该算法的时间复杂度T(n)。
三、对于分治法,试解答:(1、2题各5分,3题8分,共18分)
0jwi
m(i1, j)
五、对于贪心算法,试解答:(1题3分,2题10分,共13分)
1.贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择(即贪心选择)
来达到。……………………………………………………………………………………【3分】
2. int store(int x[],int n, int l)
{
if( | P | <= n0)adhoc(P);
divideP into smaller subinstances P1, P2, ..., Pk;……………………………………【2分】
for(i=1, i<=k, i++)
yi=divide-and-conquer(Pi);
returnmerge(y1, ..., yk);
x60
f
Q1
在Q1处获得该问题的最优解为(1,1,1,1,0,0,1),背包效益为170。即在背包中装入物品
F、B、G、D、A时达到最大效益,为170,重量为150。……………………………【12分】
一、简答题(1题4分,2题5分,3题6分,共15分)
1.什么是算法?什么是程序?
2.算法的特点是什么?
2 2 3 3
故T(n)= 2
3
T(n/2 )+3n………………………………………【2分】
3
………………….
T(n)=2
k
T(n/2
k
)+kn……………………………………【4分】
=1得:
T(n)=nT(1)+nlogn=O(nlogn)………………………………【4分】
令k=logn,即n/2
k
三、对于分治法,试解答:(1、2题各5分,3题8分,共18分)
3.算法复杂度计量符号O和的定义:
(1)O(g(n)) = {f(n) |存在正常数c和n0使得对所有nn0有:0f(n)cg(n) } ,记为f(n)
=O(g(n)),或说f(n)的阶不高于g(n)的阶当n时。…………………………【3分】
(2)(g(n)) = {f(n) |存在正常数c和n0使得对所有nn0有:0cg(n)f(n) },
3写出用贪心算法解背包问题的基本步骤和具体算法。
五、对于回溯和分支限界法,试解答:(1题2分,2题10分,共12分)
1.写出回溯法的两种解空间树。
2.写出用回溯法搜索两种解空间树的算法框架。
六、对于分支限界法,试解答:(1题5分,2题6分,共11分)
1.常见的分支限界法有几种?它们的区别是什么?
2.给出图示4个城市旅行售货员问题分支限界法求解,要求使用优先队列式解法,给出搜索过程和所有最优解。
35
7
150125167.5(1,0,1,1,1, 5
i.4030503530
j.4030503530150145157.5(0,1,1,1,1, 1 ,0)
,0)
60
12
60
12
a
x11
x10
a
j
x21
x20
a
i
x31
a
x30
x41
x40
a
d
e
x41
x50
x40
b
c
e
h
x51
x60
x70
x50
e
g
1.动态规划算法的两个基本要素,每个要素的含义是什么?
2.写出动态规划算法解题的基本步骤。
3.写出流水作业调度问题的Johnson不等式。用语言描述流水作业调度问题的Johnson算法。
四、对于贪心算法,试解答:(1题3分,2题6分,3题11分共20分)
1.贪心选择性质是什么?
2.背包问题与0-1背包问题的不同点是什么?用贪心算法解背包问题的贪心策略是什么?
限界函数来处死那些实际上不可能产生所需解的活结点,以减少问题的计算量。具有限界函
数的深度优先生成法称为回溯法。
………………………………【5分】
2.回溯法的两种解空间树:子集树和排列树……………………………………………【2分】
3.常见的两种分支限界法:队列式(FIFO)分支限界法--将活结点表组织成一个队列,按照先
3.给出算法复杂度计量符号O和的定义。
二、对于分治法,试解答:(1、2题各10分,共20分)
1.给出利用分治策略的二分搜索技术的算法。
2.对数组A={13,27,31,1,26,23,4},用无递归的合并排序法将其排成递增序。(给出解题过程)。
三、对于动态规划算法,试解答:(1、2题各6分,3题10分,共22分)
递归地定义最优值。
以自底向上的方式计算最优值。
根据计算最优值时得到的信息,构造最优解。………………………【4分】
3. (1)设(y1, y2,…, yn)是所给0-1背包问题的一个最优解,则(y2,…, yn)是下面对应问题
的最优解
n
maxvixi
i2
n
wixicw1x1,
i2
xi{0,1},2in
记为
f(n)
=(g(n)),或说f(n)的阶不低于g(n)的阶当n时。…………………………【3分】
二、算法复杂度计算(10分)
原式等价于
T(n)=2T(n/2)+n
2 2 2
递推得: 2T(n/2)=2(2T(n/2 )+n/2)=2 T(n/2 )+n
T(n)= 2
2 2
T(n/2 )+2n
又有: 2 T(n/2 )=2 T(n/2 )+n
1.分治法的基本思想什么?
2.试给出分治法的一般算法设计模式,用伪代码描述或详述解题步骤。
3.设n个不同的整数排好序后存于T[0..n-1]中。若存在一个下标i,0≤i<n,使得T[i]=i,设计一个有效算法找
到这个下标。要求算法在最坏情况下的计算时间为O(logn)。
四、对于动态规划算法,试解答:(1题4分,2题6分,3题10分,共20分)
六、对于回溯和分支限界法,试解答:(1题5分,2题2分,3题6分,4题12分,共25分)
1.试述回溯法的基本思想。
2.写出回溯法的两种解空间树。
3.常见的分支限界法有几种?它们的区别是什么?
4.假设有7个物品,它们的重量和价值如下表所示。若这些物品均不能被分割,且背包容量M=150,使用回溯
方法求解此背包问题。请写出状态空间搜索树。
1.分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题
互相独立且与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的
解。………………………………………………………………………………………【5分】
2.分治法的一般算法设计模式(伪代码描述)
divide-and-conquer(P)
物品
重量
价值
A
B
C
D
E
F
G
35
10
30
40
60
30
50
50
40
35
10
40
25
30
一、简答题(1题4分,2题4分,3题6分,共14分)
1.算法是指解决问题的一种方法或一个过程。………………………………………【2分】
程序是算法用某种程序设计语言的具体实现………………………………………【2分】
2.算法的特点:
30
1
2
5
6
10
4
20
4个城市旅行售货员问题
3
4
一、简答题(1题4分,2题5分,3题6分,共15分)
得:
4040305035150115190.625(1,1,1,1, 7 ,0,0)
a.
40
8
4040305030150115177.5(1,1,1,1,0, 7 ,0)
b.
60
12
c.4040305010170
(1,1,1,1,0,0,1)
4040303530150105167.5
d.
3
(1,1,1,0,1, ,0)
// x为程序长度数组,n为要存储的程序个数,l为磁带长度;
{int i=0,sum=0;
sort(x[],n) //先对程序长度数组排序,结果存在x中
………………………………【3分】
while(i<n){
sum=sum+x[i];
if(sum<=l) i++;
………………………………【2分】
…………………………【3分】
…………………【2分】
else
return i; //只存储前i个最短的
}//while
return n; //所有的程序都能存储
}
评分说明:算法不一定要求完全相百度文库,只要思路正确,可以酌情给分。
六、对于回溯和分支限界法,试解答:(1题5分,2题2分,3题6分,4题12
分,共25分)
1.回溯法的基本思想是:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用
否则,设(z2, …, zn)是最优解,则(y1, z2, …, zn)是原问题的更优解,而(y1, y2, …, yn)
不是最优解。矛盾,证毕。………………………………………………………【5分】
max{m(i1, j), m(i1, j – wi)vi} jw i
(2) m(i, j)=
…………………【5分】
其形式化描述为:问题的形式描述是:给定c>0,wi>0,vi>0,1≤i≤n,求n元0-1向量(x1, x2,…, xn),使得
n
目标函数
约束条件
maxvixi
i1
n
wixic,
j1
用动态规划方法可以求解0-1背包问题x,请回答下列问题:i{0,1},1in
(1)证明该问题具有最优子结构性质;
(2)设m(i, j)为背包容量为j,可选择物品为i, i+1, …, n时0-1背包问题的最优解,给出计算
}
………………………………………………………………【3分】
3. template<class Type>
int Search(Type a[],int n)
{
Int l=0; int r=n-1;
while (r >= l){
int m = (l+r)/2;
if (m = = a[m]) return m;
五、对于贪心算法,试解答:(1题3分,2题10分,共13分)
1.贪心选择性质是什么?
m(i, j)的递归式。
2.程序存储问题:设有n个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是Li,
1≤i≤n。编程任务:对于给定的n个程序存放在磁带上的长度,编写算法计算磁带上最多可以存储的程序数。
进先出(FIFO)原则选取下一个结点为扩展结点;优先队列式分支限界法--将活结点表组织
成一个优先队列,按照规定的优先级选取优先级最高的结点成为当前扩展结点。……【6分】
4.解:按照单位效益从大到小依次排列这7个物品为:FBGDECA。将它们的序号分别记
为1~7。则可生产如下的状态空间搜索树。其中各个节点处的限界函数值通过如下方式求
相关文档
最新文档