计算机学院 2007-2008 学年(下)学期期末考试试卷 
《  算法设计与分析  》试卷(A) 
专业        年级 06  班级      姓名          学号           
题号  一 
得分 
 
二 
 
三 
 
四 
 
五 
 
六 
 
七  总分 
 
 
 
一、 简答题(每小题 5 分,共 20 分) 
1、如何理解算法的时间复杂度?如何区别表示算法渐近复杂度三个记号O 、W 、Q ? 
2、什么是最优算法?请基于事实“以比较为基础的排序算法的时间下界是W
一个基于比较的最优排序算法。 
3、图有宽度优先搜索和深度优先搜索算法。如果图用邻接矩阵来表示,那么这两种算法的
(nlogn)”列举
时间复杂度是什么?如果图用邻接表来表示呢? 
4、快速排序算法是根据分治策略来设计的,其基本思想是什么?快速排序算法的最坏及平
均情况的时间复杂度分别是多少? 
 
二、计算题(共 15 分) 
1、(7 分)求解递推关系: 
T(n)=6T(n-1) -9T(n-2), n=2;T(0)=T(1)=1。 
(nlogn)。 
2、(8 分)证明:log1+log2+… +log n=Q
 
三、算法分析题(10 分) 
考虑在序列 A[1..n]中找最大最小元素的问题。一个分治算法描述如下:如果 n≤2 就直
接求解。否则,将序列等分成两个子序列 A[1..n/2]和 A[n/2+1..n],分别找出这两子序列的最
大最小元素 x1,y1 和 x2,y2;然后据此求出 A[1..n]的最大元素 x=max{x1,x2}及最小元素
y=min{y1,y2}。请给出该算法计算时间 T(n)满足的递归方程,并解方程来确定算法的时间复
杂度。假定 n=2k(k 为正整数)。 
 
四、 归纳技术应用题(共 10 分) 
1、(4 分)简述基数排序算法的基本思路和算法时间复杂度; 
2、(6 分)考虑使用基数排序算法对下列8 个数据进行排序,请给出中间排序的结果。 
2756  7352  3725  3762  5273  2375  5732  5627 
 
五、 动态规划法应用题(共 15 分) 
考虑用动态规划法求解矩阵连乘 M1M2M3M4M5 的最优运算(即元素乘法次数最少)的
次序,其中 M1:5· 6,M2:6· 4,M3:4· 8,M4:8· 3,M5:3· 5。 
1、(5 分)设 C[i,j]表示矩阵连乘MiMi+1… Mj 按照最优次序运算所需要的元素乘法次数。请
给出 C[i,j]递推计算的公式。 
2、(10 分)根据递推公式填写下表,包括 C[i,j]的值及对应的最优运算次序的加括号方式。 
- 1 - 
C[1,1]=0 
M1 
 
 
 
 
C[1,2]= 
 
C[2,2]= 
 
 
 
 
 
C[1,3]= 
 
C[2,3]= 
 
C[3,3]= 
 
 
 
C[1,4]= 
 
C[2,4]= 
C[1,5]= 
 
C[2,5]= 
C[3,4]= 
C[3,5]= 
C[4,4]= 
 
 
C[4,5]= 
C[5,5]= 
 
A 
5 
D 
5 
E 
10 
15 
20 
15 
H 
F 
10 
15 
B 
C 
25 
展 示
 
六、 贪心法应用题(共 10 分) 
1、(4 分)Prim 算法是求最小生成树的贪心算法,请简述 Prim 算法的基本思想。 
 
2、(6 分)用 Prim 算法求下图的最小生成树。要求用图或表格
主要计算过程。 
 
 
 
 
 
 
七、 算法设计题(共 20 分) 
1、(4 分)简述设计回溯算法的基本步骤。2、(10 分)在回溯法应用的综合性实验中,根据
你做选做的题目,简要叙述你是如何用回溯法解决这个问题的(即给出求解该问题的回溯算
法的几个要素)。3、(6 分)本课程中学习了分治法、贪心法、动态规划法、回溯法等设计
算法的基本策略,在解决问题时应如何选用这些策略设计算法?结合实验谈谈体会。 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
- 2 - 
20 
G 
5 
 
 
 
计算机学院 2007-2008 学年(下)学期期末考试试卷 
《  算法设计与分析  》试卷(B) 
专业        年级 06  班级      姓名          学号           
题号  一 
得分 
 
二 
 
三 
 
四 
 
五 
 
六 
 
七  总分 
 
 
 
一、简答题(每小题 5 分,共 20 分) 
1、算法 A 的计算时间T1(n)满足递归关系式:T1 (n)=3T1 (n-1)+1,, n>1;;T1 (1)=1。算法 B
的计算时间T2(n)= 2n3+1000nlog10n+100n。请使用记号Q 分别表示 T1 (n)和 T2 (n)。 
2、设 G=Æ  V,Eæ 是无向图,n=|V|,m=|E|,且 m=O(n1.99)。如果要求图 G 的最小成生树,你愿
意选择哪一个算法:  Prim 算法还是 Kruskal 算法?为什么? 
3、在有向图的深度优先搜索中,边被分为哪几类? 
4.设 A[1..n]是元素取值于区间[1..2n]的整型数组,考虑对 A 进行排序。你认为归并排序算
法  MERGERSORT 和基数排序算法 RADIXSORT 哪一个可能更快?简述原因。 
 
二、 计算题(共 15 分) 
1、(7 分)求解递推关系: 
T(n)=3T(n- 1)+4T(n- 2),n=2;T(0)=1,T(1)=2。 
2、(8 分)证明:对于任意正整数 k 有 1k+2 k +…+n k =Q
 
三、算法分析题(共 10 分) 
(nk+1)。 
考虑求下列数列的通项an:a0=0,a1=1,an=an-1+an-2(n>1)。下面是使用 C 语言表示的
递归算法:  
int    A(int n) 
{     if (n= =0)  return 0; 
        if  (n= =1)  return 1; 
else    return    A(n- 1)+A(n- 2); 
(n)时间即可求出FA(n)吗?简述你的改进办法。 
} 
1、(5 分)分析算法的时间复杂度。 
2、(5 分)你能够改进算法使得用Q
 
四、(共 10 分)考虑在 8 个元素的集合 A(1:8)=(10, 35, 5, 40, 20, 25, 30, 15)中找最大和最小
元素。 
1、(6 分)说明用分治法求解此问题的基本思路,并画出求解过程; 
2、(4 分)分析求解过程中所作的元素比较次数,并将这一结果与直接求解法所需作的元素
比较次数进行对比。 
 
五、(共 15 分)请使用动态规划法求解下列 0-1 背包问题实例:n=4 个物品,大小分别为
W={2,3,4,6},价值分别为 P={3,6,5,9},背包容量为M=10。 
- 3 - 
 
1、(5 分)请给出递推计算公式。 
2、(10 分)根据递推计算公式用表格展示出计算过程,并给出最优结果。 
 
六、(共 10 分)考虑用哈夫曼算法来找字符a,b,c,d,e,f 的最优编码。这些字符出现在文件中
的频数之比为  20:10:6:4:44:16。要求: 
1、(4 分)简述使用哈夫曼算法构造最优编码的基本步骤; 
2、(6 分)构造对应的哈夫曼树,并据此给出a,b,c,d,e,f 的一种最优编码。 
 
七、算法设计题(共 20 分) 
1、(4 分)请给出设计回溯算法的主要步骤。 
2、(10 分)考虑使用回溯法解 4 皇后问题,解空间取为由 1,2,3,4 的 4!种排列所组成。要求:
用文字描述定义剪枝操作;画出用回溯算法找出一个解所产生的部分搜索树,并写出这个解。 
3、(6 分)本课程中我们学习了分治法、贪心法、动态规划法、回溯法等几种设计算法的基
本策略,在解决实际问题时应如何来选用这些策略来进行算法设计?谈谈你的体会。可以结
合所做过的实验情况来谈。 
 
- 4 -