湖南大学深刻复习算法分析期末答案解析大题Word文档下载推荐.docx
《湖南大学深刻复习算法分析期末答案解析大题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《湖南大学深刻复习算法分析期末答案解析大题Word文档下载推荐.docx(48页珍藏版)》请在冰豆网上搜索。
请将
此过程填入下表中。
迭代
S
u
dist[2]
dist[3]
dist[4]
dist[5]
初始
{1}
-
10
maxint
30
100
1
2
3
最长公共子
予列问题:
给定
[2个序
咧X={x1
x2,…,xm
-和Y={y1,
y2,…,yn}
找
出X和Y的最长公共子序列
由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系
用c[i][j]记录序列Xi和Yj的最长公共子序列的长度。
其中,Xi={x1,x2,…,xi};
Yj={y1,y2,…,yj}。
当i=0或j=0时,空序列是Xi和Yj的最长公共子序列。
故此
时C[i][j]=0。
其它情况下,由最优子结构性质可建立递归关系如下:
0i0,j0
c[i][j]c[i1][j1]1i,j0;
xyj
max{c[i][j1],c[i1][j]}i,j0必yj
在程序中,b[i][j]记录C[i][j]的值是由哪一个子问题的解得到的。
三、算法理解
1、写出多段图最短路经动态规划算法求解下列实例的过程,并求出最优值。
'
I3/心l:
8
各边的代价如下:
C(1,2)=3,C(1,3)=5
C(1,4)=2
C(2,6)=8,C(2,7)=4
C(3,5)=5,C(3,6)=4,C(4,5)=2,C(4,6)=1
C(5,8)=4,C(6,8)=5
C(7,8)=6
解:
Cost(4,8)=0
Cost(3,7)=C(7,8)+0=6
D[5]=8
Cost(3,6)=C(6,8)+0=5,D[6]=8
Cost(3,5)=C(5,8)+0=4D[7]=8
Cost(2,4)=min{C(4,6)+Cost(3,6),C(4,5)+Cost(3,5)}
=min{1+5,2+4}=6D[4]=6
Cost(2,3)=min{C(3,6)+Cost(3,6)}
=min{4+5}=9D[3]=5
Cost(2,2)=min{C(2,6)+Cost(3,6),C(2,7)+Cost(3,7)}
=min{8+5,4+6}=10
D[2]=7
Cost(1,1)=min{C(1,2)+Cost(2,2),C(1,3)+Cost(2,3),C(1,4)+Cost(2,4)}
=min{3+10,5+9,2+6}=8
D[1]=4
1t4t6t8
2、写出maxmin算法对下列实例中找最大数和最小数的过程。
数组A=(48,12,61,3,5,19,32,7)
写出maxmin算法对下列实例中找最大数和最小数的过程。
数组A=()
1、48,12,61,3,5,19,32,7
2、
48,12
61,3
5,19
32,7
3、
48〜
61,
12〜3
19〜32,
5〜7
4、
61〜
32
3〜5
5、
61
1、快速排序算法对下列实例排序,算法执行过程中,写出数组A第一次被分割的过程。
A=(65,70,75,80,85,55,50,2)
第一个分割元素为65
(1)
(2)(3)(4)⑸(6)⑺(8)ip
6570/580855550228
65
75
80
■
85
55
50
70
7
4
6
-►
557075808565502
A=(48,12,61,3,5,19,32,7)
解:
48,12,61,3
5,19,32,7
12,48
3,61
7,32
3,12,48,61
5,7,19,
3,5,7,12,19,
32,48,61
3、写出图着色问题的回溯算法的判断
X[k]是否合理的过程。
i—0
whilei<
kdo
ifG[k,i]=1andX[k]=X[i]thenreturnfalse
i—i+1
repeat
ifi=kthenreturntrue
4、对于下图,写出图着色算法得出一种着色方案的过程。
4'
.
X[1]—1,返回true
X[2]
—1,返回false;
X[2]-
—X[2]+1=2,
返回
true
X[3]
—1,返回false;
X[3]
—X[3]+1=2,
false;
—X[3]+1=3,
返回true
X[4]
X[4]
—X[4]+1=2,
—X[4]+1=3,
找到一个解(1,2,3,3)
5、写出第7题的状态空间树。
X[2]=2
8、写出归并排序算法对下列实例排序的过程。
(6,2,935,1,8,7)
调用第一层次
6,2,9,3
5,1,8,7
分成两个子问题
调用第二层次
6,2
9,3
5,1
8,7分成四个子问题
调用第三层次
62
93
5
187
分成八个子问题
调用第四层次
只有
•个元素返回上一层
第三层归并
2,6
3,9
1,57,8
返回上一层
第二层归并
2,3,6,9
1,5,7,8
第一层归并,
1,2,3,5,6,7,8,9
排序结束,返回主函数
9、写出用背包问题贪心算法解决下列实例的过程。
P=(18,12,4,1)
W=(12,10,8,3)
M=25
实例符合P(i)/W(i)》P(i+1)/W(i+1)的顺序。
CU—25,X—0
W[1]<
CU:
x[1]—1;
CU—CU-W[1]=13;
W[2]<
x[2]—1;
CU—CU-W[2]=3;
W[3]>
CU:
x[3]—CU/W[3]=3/8;
实例的解为:
(1,1,3/8,0)
11、有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当使用二分查找值为82的结点时,经过多少次比较后查找成功并给出过程。
有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,100},当使用二分查找值为82的结点时,经过多少次比较后查找成功并给出过程。
一共要要执行四次才能找到值为82的数。
12、使用prim算法构造出如下图G的一棵最小生成树。
dist(1,2)=6;
dist(2,5)=3;
dist(5,6)=6;
dist(6,4)=2;
dist(4,1)=5;
dist(1,3)=1;
dist(2,3)=5;
dist(3,4)=5;
dist(3,6)=4;
dist(5,3)=6
使用普里姆算法构造出如下图G的一棵最小生成树。
13、有如下函数说明intf(intx,inty)
{
f=xMody+1;
}
已知a=10,b=4,c=5则执行k=f(f(a+c,b),f(b,c))后,k的值是多少并写出详细过程。
有如下函数说明
intf(intx,inty)
K的值是5
四、设计算法
1.设有n项独立的作业{1,2,…,n},由m台相同的机器加工处理。
作业i所需要的处理
时间为ti。
约定:
任何一项作业可在任何一台机器上处理,但未完工前不准中断处理;
任何
作业不能拆分更小的子作业。
多机调度问题要求给出一种调度方案,使所给的n个作业在尽可能短的时间内由m台
机器处理完。
设计算法,并讨论是否可获最优解。
对于处理机j,用S[j]表示处理机j已有的作业数,用P[j,k]表示处理机j的第k
个作业的序号。
1)将作业按照t[1]>
t[2]>
2)S[1:
m]清零j-0
3)fori—1tondo
j—jmodm+1
S[j]—S[j]+1;
……趙n]排序
//从第一个处理机开始安排
//安排n个作业
//选下一个处理机
P[j,S[川—i;
Repeat
2•设有n种面值为:
羽n的钱币,需要找零钱M,如何选择钱币dk,的数目Xk,满足
diXXi+……dnXXnM,使得
Xi+……Xn最小
请选择贪心策略,并设计贪心算法。
贪心原则:
每次选择最大面值硬币。
CUJM;
iJ1;
XJ0//X为解向量
WhileCU工0do
X[i]jCUdivd[i]//X[i]为第i中硬币数
CUJCU-d[i]*X[i]
iji+1;
3.有n个物品,已知n=7,利润为P=(10,5,15,7,6,18,3),重量W=(2,3,5,7,1,4,1),背
包容积M=15,物品只能选择全部装入背包或不