武汉大学计算机学院《算法设计与分析》考试试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉大学计算机学院
2007---2008学年第一学期2005级
《算法设计与分析》考试试卷(A)
1、(10分)证明:若f₁(n)=O(g₁(n)), f₂(n)=O(g₂(n)),则有:
f₁(n)* f₂(n)= O(g₁(n))* O(g₂(n))
2、(10分)设f(n)为单调递减函数,利用不等式
证明:= O(log n)。
3、(10分)用归纳法证明递归关系:
T(n
的解为T(n)=,n=0,1,2….
4、(10分)试用RadixSort算法对下面数组进行排序,写出排序的详细过程:
1455,5677,5323,8122,4901,6647,1123,8762
5、(10分)给定数组含25个元素的数组如下,利用SELECT算法求数组中第13小的元素,在应用SELECT算法时,要求每组含有的元素个数为7而不是5,另外,当元素个数是6时,直接求解:
8,33,17,51,57,49,35,11,25,37,14,2,3, 13,52,12,6,29,32,54,5,16,22,23,7
6、(12分)给定两个字符串X=(A,B,C,B,D,A,B)和Y=(B,D,C,A,B,A),考虑利用动态规划方法求解这两个字符串的最长公共子序列问题:
(1)利用动态规划算法求出上述两个字符串的最长公共子序列,要求写出动态规划方程和详细的求解过程,不需要写出具体的算法;
(2)请给出一个最长公共子序列的表达式,并说明你的依据。
7、(12分)假设有一个包含100,000个字符的数据文件要压缩存储,各字符
的出现频度如下:
(1)试构造出这些字符的哈弗曼编码方案,要求写出详细过程,不需要写出具
体算法;
(2)计算采用哈弗曼编码方案与定长编码的压缩比。
8、(16分)设有向图的成本矩阵如下,写出利用TSP问题的分析限界法(搜索树限为二叉树)求经过该图每个节点刚好一次的闭合最短路径的过程:(1)写出原始成本矩阵的归约矩阵,并计算其矩阵约数;
(2)写出用来划分节点的边的选择方法;
(3)给出具体的搜索树;
(4)根据搜索树,列出最优的周游路线和其对应的成本值。
9、(10分)写出一个回溯算法求解哈密顿回路问题:给出一个无向图G=(V,E),确定其中是否包含有一个简单回路,使得访问一个顶点恰好一次?
编辑距离的性质
计算两个字符串s1+ch1, s2+ch2的编辑距离有这样的性质:
1. d(s1,””) = d(“”,s1) = |s1| d(“ch1”,”ch2”) = ch1 == ch2 ? 0 : 1;
2. d(s1+ch1,s2+ch2) = min( d(s1,s2)+ ch1==ch2 ? 0 : 1 ,
d(s1+ch1,s2),
d(s1,s2+ch2) );
第一个性质是显然的。第二个性质:由于我们定义的三个操作来作为编辑距离的一种衡量方法。于是对ch1,ch2可能的操作只有
1. 把ch1变成ch2
2. s1+ch1后删除ch1 d = (1+d(s1,s2+ch2))
3. s1+ch1后插入ch2 d = (1 + d(s1+ch1,s2))
对于2和3的操作可以等价于:
_2. s2+ch2后添加ch1 d=(1+d(s1,s2+ch2))
_3. s2+ch2后删除ch2 d=(1+d(s1+ch1,s2))
因此可以得到计算编辑距离的性质2。
因此复杂度为O( |s1| * |s2| ) ,如果假设他们的长度都为n,则复杂度为O(n^2)