___号学 ____ 栏__ 名 姓 息 级 年线 _ _ _ _ _ 信 _ 业 专订 _ _ _ 生 _ _ _ 系 _装 _ 考____院学______福建师范大学数学与计算机科学学院 2006 — 2007学年第二学期考试 A 卷
专 业:计算机科学与技术 年 级: 2005级 课程名称: 算法设计与分析 任课教师: 潘日晶 试卷类别:开卷( )闭卷(√) 考试用时: 120 分钟 考试时间: 2007 年 1 月 13 日 下 午 18 点 30 分
题号 一 二 三 四 五 总得分 评卷人 得分 题号 六 七 八 九 十 得分 福建师范大学试卷纸 共 9 页,第 1 页
一.填空题(每空2分,共30分) 1.算法的时间复杂性指算法中 的执行次数。 2.在忽略常数因子的情况下,O、?和?三个符号中, 提供了算法运行时间的一个上界。 3.设Dn表示大小为n的输入集合,t(I)表示输入为I时算法的运算时间, p(I)表示输入I出现的概率,则算法的平均情况下时间复杂性A(n)= 。 4.分治算法的时间复杂性常常满足如下形式的递归方程: ?f(n)?d , n?n0 ? f(n)?af(n/c)?g(n) , n?n0? 其中,g(n)表示 。 5. 分治算法的基本步骤包括 。 6.回溯算法的基本思想是 。 7.动态规划和分治法在分解子问题方面的不同点是 。 8.贪心算法中每次做出的贪心选择都是 最优选择。 9.PQ式的分支限界法中,对于活结点表中的结点,其下界函数值越小,优先级越 。 10.选择排序、插入排序和归并排序算法中, 算法是分治算法。 11.随机算法的一个基本特征是对于同一组输入, 不同的运行可能得到 的结果。 12.对于下面的确定性快速排序算法,只要在步骤3前加入随机化步骤 ,就可得到一个随机化快速排序算法,该随机化步骤的功能是 。 算法 QUICKSORT 输入:n个元素的数组A[1..n]。 输出:按非降序排列的数组A中的元素。 福建师范大学试卷纸 共 9 页,第 2 页
_____号学 _ _栏_ _ _ _ 名 姓 息 级 年 _ _信_ _ _ _ 业 专生 _ _ _ _ _ _ 考系______院学______1. quicksort(1, n) end QUICKSORT 过程 quicksort(A, low, high) // 对A[low..high]中的元素按非降序排序。 2. if low A[i]?A[1] w =i return w, A end SPLIT 二.计算题和简答题(每小题7分,共21分) 1.用O、?、?表示函数f与g之间阶的关系,并分别指出下列函数中阶最低和最高的函数: (1) f (n)=100 g(n)=100n (2) f(n)=6n+n?logn? g(n)=3n (3) f(n)= n/logn-1 g(n)=2n (4) f(n)=2n?n2 g(n)=3n (5) f(n)= log3n g(n)= log2n 2.下面是一个递归算法,其中,过程pro1和pro2的运算时间分别是1和log2n。给出该算法的时间复杂性T(n)满足的递归方程,并求解该递归方程,估计T(n)的阶(用?表示)。 算法 EX1 输入:正整数n,n=2k。 输出:… ex1(n) end EX1 过程 ex1(n) if n=1 then pro1(n) else 福建师范大学试卷纸 共 9 页,第 4 页 _____号学 _栏_ _ _ _ _ 名 姓息 级 年 _信_ _ _ _ _ 业 生专 _ _ _ _ _ _考系______院学______pro2(n) ex1(n/2) end if return end ex1 3.用Floyd算法求下图每一对顶点之间的最短路径长度,计算矩阵D0,D1,D2和D3,其中Dk[i, j]表示从顶点i到顶点j的不经过编号大于k的顶点的最短路径长度。 线 三.算法填空题(共34分) 1.(10分)设n个不同的整数按升序存于数组A[1..n]中,求使得A[i]=i 订 的下标i 。下面是求解该问题的分治算法。 算法 SEARCH 输入:正整数n,存储n个按升序排列的不同整数的数组A[1..n]。 输出:A[1..n]中使得A[i]=i的一个下标i,若不存在,则输出 no 装solution。 i=find ( (1) ) if i>0 then output i else output “no solution” end SEARCH 过程 find (low, high) // 求A[low..high] 中使得A[i]=i的一个下标并返回,若不存在, 福建师范大学试卷纸 共 9 页,第 5 页