栏
息
信
生
考
_
_
_
号
学
_
_
_
_
_
_
名
姓
级
年
_
_
_
_
_
_
业
专
_
_
_
_
_
_
系
_
_
_
_
_
_
院
学
_
_
_
_
_
_
线
订
装
福建师范大学数学与计算机科学学院
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.分治算法的时间复杂性常常满足如下形式的递归方程:
。
)n(f
f(n)
d
af(n/c)
g(n)
n ,
n ,
n
n
0
0
其中,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]中的元素按非降序排序。
if low
A[i] A[1]
w =i
return w, A
end SPLIT
二.计算题和简答题(每小题 7 分,共 21 分)
1.用 O、 、 表示函数 f 与 g 之间阶的关系,并分别指出下列函数中阶最低和最高
的函数:
(1)
(2)
f (n)=100
f(n)=6n+n
log
n
(3)
f(n)= n/logn-1
(4)
(5)
f(n)=
2
n
2
n
f(n)=
log
n3
g(n)= 100 n
g(n)=3n
g(n)=
n2
g(n)= n3
g(n)=
log
n2
2.下面是一个递归算法,其中,过程 pro1 和 pro2 的运算时间分别是 1 和
log 2 。给
n
出该算法的时间复杂性 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 页
栏
息
信
生
考
_
_
_
_
_
号
学
_
_
_
_
_
_
名
姓
级
年
_
_
_
_
_
_
业
专
_
_
_
_
_
_
系
_
_
_
_
_
_
院
学
_
_
_
_
_
_
线
订
装
//则返回 0。
if
else
(2)
then return 0
mid=
low(
high
2/)
(3)
then return mid
if
else
if A[mid]
for i=1 to n C[i, i]=
(1)
for d=1 to n-1
for i=1 to n-d
j=
(2)
C[i, j]= ∞
for k=i+1 to j
(3)
x=
if x
x=x0; y=y0 ; tag[x, y]=1
m=n*n
i=1; k[i]=0
(1)
while
and not flag
while k[i]<8 and not flag
(2)
k[i]=
x1= x+dx[k[i]]; y1= y+dy[k[i]]
if
((x1,y1)无越界 and tag[x1, y1]=0) or ((x1,y1)=(x0,y0) and i=m) then
x=x1; y=y1
tag[x, y]=
if i=m then flag=true
else
(3)
i=
(4)
(5)
end if
end if
end while
i=i-1
(6)
(7)
end while
if flag then outputroute(k) //输出路径
else output “no solution”
end HORSETRAVEL
福建师范大学试卷纸
共 9 页,第 8 页