算法设计与分析07bvtc题目Word格式文档下载.docx
- 文档编号:17308074
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:8
- 大小:22KB
算法设计与分析07bvtc题目Word格式文档下载.docx
《算法设计与分析07bvtc题目Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《算法设计与分析07bvtc题目Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
2、叙述分治算法和动态规划算法的基本思想,及求解过程。
3、贪心算法的基本思想。
4、试分析分支限界法和回溯法的不同点。
填空题
1、考虑下面的算法,回答问题:
intFind(intA[],intn,intk)
{for(inti=0;
i<
n;
i++)
if(A[i]==k)break;
if(i<
n)returni;
return-1;
}
(1)该算法实现的功能是什么?
(2)该算法的基本操作是什么?
2、试分析如下算法段,并该算法的时间复杂度。
for(i=0;
{for(j=0;
j<
i;
j++)
{for(k=0;
k<
j;
k++)
x=x+2;
}}
该算法的时间复杂度为T(n)=
2、给定如下算法,试分析其时间复杂度
count←0
whilen>
=1
forj←1ton
count←count+1
endfor
n←n/2
endwhile
returncount
该算法的时间复杂度为T(n)
3、试分析如下算法段的时间复杂度。
{for(j=0;
{for(k=0;
该算法的时间复杂度为
4、以下利用二分法求方程f(x)=x3+x2-1=0在[0,1]上的近似解。
解题步骤如下:
1确定区间,验证f(a)<
0,f(b)>
0,给定精度e。
2求区间的中点mid。
3计算f(mid)=0,则mid就是函数的零点;
若f(a)×
f(mid)<
0,则令b=mid(此时零点a<
x0<
mid);
若f(mid)×
f(b)<
0,则令b=mid(此时零点mid<
b);
4若|a-b|<
e,则得到零点近似值a(或b);
否则重复2-4
请将该算法中未完成的部分填写完整。
Func(doublea,doubleb,doublec,doubled,doublex)//函数表达式
{returna*x*x*x+b*xx+c*x+d;
FindRoot(doublea,doubleb,doublec,doubled,doublelow,doublehigh,doublee)
{doublemid=_______;
if(Func(a,b,c,d,mid)==0)
return______;
while((high-low)>
=e)
{mid=(low+high)/2;
returnmid;
if(Func(a,b,c,d,low)*(Func(a,b,c,d,mid)<
0)
high=_________;
else
low=_________;
returnlow;
5、已知下面的带权有向图,应用Dijkstra算法计算从源节点1到其它顶点的最短路径。
要求制表说明详细的求解过程。
10↙①↘100
②⑤
50↓10↗↑60
③←④
迭代
S
u
dist[2]
dist[3]
dist[4]
dist[5]
初代
1
2
3
4
6、活动安排问题:
设有n个活动的集合E=[1,2,…,n],其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。
每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<
fi,如果选择了活动i,则它半开时间区间[si,fi)内占用资源。
若区间[si,fi)与区间[sj,fj)不想交,则称活动i与活动j是相容的,也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。
要求用贪心算法求出在11个所给的活动集合中的最大的相容活动子集合,11个活动的开始时间和结束时间如下:
i
5
6
7
8
9
10
11
si
12
fi
13
14
解题步骤:
根据贪心原理,选择最早结束时间策略,计算过程如下表:
序号
原序号
相容性
√
7、以下利用动态规划求解0-1背包问题。
intKnapSack(intn,intw[],intV[],intC,intx[])
{
intV[n+1][C+1];
for(inti=0;
=n;
i++)//初始化第0列
__________;
for(intj=0;
=C;
j++)//初始化第0行
for(i=1;
i++)//计算第i行,进行第i次迭代
for(j=1;
if(j<
w[i])
else
{
if(v[i-1][j]>
v[i-1][j-w[i]]+v[i])
else
}
J=C;
//求装入背包的物品
for(i=n;
i≥0;
i--)
if(V[i][j]>
V[i-1][j])
{
__________;
j=j-w[i];
}
else__________;
returnV[n][C];
//返回背包取得的最大价值
8、以下利用分治算法对数组元素进行快速排序。
1划分:
选定一个记录作为轴值,以轴值为基准将整个序列划分为两个子序列r1……ri-1和ri+1……rn,前一个子序列中记录的值均小于或等于轴值,后一个子序列中记录的值均大于或等于轴值;
2求解子问题:
分别对划分后的每一个子序列递归处理;
3合并:
由于对子序列r1……ri-1和ri+1……rn的排序是就地进行的,合并不需要执行任何操作。
voidQuickSort(int*IntArray,intArrayLen)//IntArray[]数组,ArrayLen数组长度
{
if(ArrayLen>
1)
{intnum=0,i=0,j=ArrayLen-1;
//从后往前查找比关键数大的数,交换
for(j;
j>
num;
j--)
{if(________________)
{Change(&
IntArray[num],&
IntArray[j]);
num=j;
break;
}}
//从前往后查找比关键数小的数,交换
for(i;
i<
i++)
{
if(________________)
Change(&
IntArray[i]);
num=i;
}}}
//数组分两部分成比关键数大的部分和比关键数小的部分,分别利用分治算法对这两部分元素再进行快速排序。
QuickSort(________________);
10、已知如下多段图,S1-S2-S3-S4。
写出用动态规划求最短路径的递推关系式,并写出求冲源点A到终点E的最短路径过程。
S1:
K=4,有:
F4(D1)=3,F4(D2)=4,F4(D3)=3
S2:
K=3,有:
F3(C1)=min{d3(C1,D1)+F4(D1),d3(C1,D2)+F4(D2)}
=min{8,9}=8
F3(C2)=d3(C2,D1)+F4(D1)=5+3=8
F3(C3)=d3(C3,D3)+F4(D3)=8+3=11
F3(C4)=d3(C4,D3)+F4(D3)=3+3=6
S3:
K=2,有:
F2(B1)=min{d2(B1,C1)+F3(C1),d2(B1,C2)+F3(C2),d2(B1,C3)
+F3(C3)}=min{9,14,14}=9
F2(B2)=min{d2(B2,c2)+F3(C2),d2(B2,C4)+F3(C4)}
=min{16,10}=10
S4:
k=1,有:
F1(A)=min{d1(A,B1)+F2(B1),d1(A,B2)+F2(B2)}
=min{14,13}=13
因此由A到E的全过程的最短路径为A—>
B2一>
C4—>
D3—>
E,
最短路程长度为13。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 分析 07 bvtc 题目