2015武汉大学《算法设计与分析》期中试卷
更新时间:2024-04-13 05:14:01 阅读量: 综合文库 文档下载
- 武汉大学绩点算法推荐度:
- 相关推荐
武汉大学计算机学院 算法设计与分析 期中测试
姓名: 学号: 学院: 专业:
一、请用大“O(·)”记号求下列函数的渐进表达式:3n2 + 10n -1; n2/10 + 2n +1/n; 14 + 5/n + 1/n2 ; logn2?n; 20log3n(10分,每小题2分)
解答:
上述渐进表达式的时间复杂度分别为:
3n2 + 10n -1 =O(n2); n2/10 + 2n + 1/n =O(2n); 14 + 5/n + 1/n2=O(1);
logn2?n=O(logn); 20log3n =O(n)
二、 令{1},{2},{3},…,{8}是n个单元素集合,每个集合由一棵仅有一个结点的树表示。请用按秩合并和路径压缩措施的UNION-FIND算法来执行以下操作序列,并画出每一步操作完成后的树表示。(总分20分)合并和查找操作序列如下所示:UNION(1,2);UNION(4,3);UNION(5,6);UNION(7,8);UNION(2,6);FIND(1);UNION(3,8);UNION(8,6);FIND(4);FIND(5)。要求:UNION操作在同秩情况下,以后一个结点作为根结点。如UNION(1,2),生成以2为根结点的树。
解答:
(a)12345678(b)216346587UNION(1,2);UNION(4,3);UNION(5,6);UNION(7,8);(c)125UNION(2,6);6(d)FIND(1);5812(e)437681725UNION(3,8);(f)43UNION(8,6);6(g)3487125FIND(4);6(h)3487125FIND(5);
三、 设有n个小球,其中一个是劣质球,其特征是重量较轻,给你一个天平,设计一个分治算法,找出劣质球。(总分15分) (1) 写出算法的主要思路;(5分) (2) 试分析算法的时间复杂度;(5分) (3) 试分析n=9和10,即n分别为奇数和偶数,两种情形下的分治过程。(5分)
解法:(1)二对分算法思路:
①若小球个数≤2,则直接比较,找出假币。否则,转②。 ②若n%2=0,则将其分为个数相等的两部分,选择轻的部分保留,转①;否则转③。
③将a[0…n-2]分为相等的两部分:若两部分重量相等,则a[n-1]为劣质球,终止;若不等,则保留轻的部分,转①。
(2)以比较操作为基本运算,最好情况比较1次,最坏比较logn次,
(3)① 分成两部分:a[0…4]、a[5…9],假定后者轻,保留a[5…9]
② 分成三部分:a[5…6]、a[7…8]、a[9],若前两者一样重,故劣质球为a[9]。
四、 考试前,A老师给同学答疑,同一时间只能给一个同学答疑,有n个人等待答疑,已知每个人需要答疑的时间为ti(0
(1)请写出两种以上的贪心策略,比较它们,选出一种用于贪心算法;(5分) (2)写出贪心算法的主要思路;(5分)
(3)该算法一定能够保证排队时间总和最小?请简要说明理由。(5分)
解法:
(1)答疑时间短先安排;答疑时间长先安排。
(2)本题贪心算法:n个人时间从小到大排序,就是这n个人最佳排队方案。求部分和的和即为所求。
(3)反证法证明:假设有最优解序列:s1,s2…sn,如s1不是最小的Tmin,不妨设sk=Tmin,将s1与sk对调,显然,对sk之后的人无影响,对sk之前的人等待都减少了,(s1-sk)>0,从而新的序列比原最优
序列好,这与假设矛盾,故s1为最小时间,同理可证s2…sn依次最小。
五、 在一个操场上一排地摆放着N堆石子,N堆石子的编号为1,2,?,N。现要将石子有次序地合并成一堆。每堆石子包含的石子个数给定,规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。(总分20分)
(1) 假设要求计算出将N堆石子合并成一堆的最小得分值,已知该问题可以采用动态规划来进行求解,试写出你的动态规划算法的递归方程,并分析该递归方程能否采用递归程序来实现;(5分) (2) 试设计一个动态规划程序(伪代码即可),计算出将N堆石子合并成一堆的
最小得分值;(5分)
(3) 试分析第(2)问中你设计的动态规划算法的时间复杂度;(5分)
(4) 如果要得到取得最小得分的合并方案,将如何修改程序,使之能够输出最
优的合并方案,并分析该方法的空间复杂度(注意:最优合并方案的表示可以采用加括号的方式表示)。(5分)
参考答案:注意,本题会有多种解法,参考答案仅仅是一种,改卷子时一定要看清楚
(1) 设S(i)表示前i堆石子总的数量(也即价值之和),f[i][j]
表示把第i堆到第j堆的石头合并成一堆的最优值。则递推方程为:
(f[i][k]?f[k?1][j]?s[j]?s[i])i?j??imin?k?jf[i]?j???
0i?j?? -----------------------得分3分
由于该递推方程递推下去包含有大量重叠子问题,所以不能直接采用递归算法来实现,递归的算法复杂度为:
1?2n?2?f(n)??f(k)f(n?k)??? n?1nk?1??n?1 -----------------------得分2分 (2) 算法分为初始值赋值和循环两个评分点,算法的伪代码为;
Algorithm dd() {
for (i=1; i<=n; i++) f[i][i]=0; //可能超出int的范围 -----------------------得分2分 for (i=n-1; i>=1; i--) for (j=i+1; j<=n; j++) f[i][j]=INF;
for (k=i; k<=j-1; k++)
f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+s[j]-s[i-1]); -----------------------得分3分 printf(\ return 0; }
(3) 算法复杂度为?(n3)。
-----------------------得分3分 (4) 输出最优解的程序(和矩阵链相乘一样)
Algorithm dd(p) {
n ← length[p] - 1 for i ← 1 to n m[i, i] ← 0 end for
for l ← 2 to n for i ← 1 to n – (l – 1) j ← i + (l – 1) m[i, j] ← ∞ for k ← i to j - 1
q ← m[i, k] + m[k + 1, j] + p[i-1] p[k]p[j] if q < m[i, j]
then m[i, j] ← q, s[i, j] ← k end if end for end for end for return m and s }
-----------------------得分2分
PRINT-OPTIMAL (s, i, j) 1 if i = j 2 then print \A\i
3 else print \
4 PRINT-OPTIMAL (s, i, s[i, j]) 5 PRINT-OPTIMAL (s, s[i, j] + 1, j) 6 print \
-----------------------得分2分
空间复杂度为?(n2)。
-----------------------得分1分
六、最大团问题:给定无向图G=(V,E),其中V是非空集合,称为顶点集;E是V中元素构成的无序二元组的集合,称为边集,无向图中的边均是顶点的无序对,无序对常用圆括号“( )”表示。如果给定U?V,且对任意两个顶点u,v∈U有(u,v)∈E,则称U是G的完全子图。G的完全子图U是G的团当且仅当U不包含在G的更大的完全子图中。G的最大团是指G中所含顶点数最多的团。(总分20分)
(1)请设计一个回溯算法(伪代码即可)来求解最大团问题;(10分) (2)你设计的算法的解向量如何表示?时间复杂度是多少?(5分) (3)假设有如下下图所示的问题实例,
132
试采用你设计的算法,把求解最大团的搜索过程详细写出来。(5分)
45参考答案:注意,本题会有多种解法,参考答案仅仅是一种,改卷子时一定要看清楚。
(1) 假设解向量采用等长的二进制编码(x1,x2,?,xn),其中n为图
中顶点的个数,回溯算法的递归版本代码如下:
Input: An undirected graph G=(V,E). Output: A solution vector x[1,2,…,n]. 1. for k?1 to n 2.
y[k]=x[k]?-1
3. end for 4. mcl?-1 5. maxcl(1,0,n) 6. output y 7. output mcl Procedure maxcl (k,r,l) 1. x(k) = 0 2. if k=n then
3. if r>mcl then {mcl = r, y=x} endif 4. else if r+l >macl then maxcl(k+1,r,l-1) 5. endif 6. x(k) =1
7. if 节点k与前面取值为1的节点均有边相连 then 8. if k=n then
9. if r>mcl then {mcl = r, y=x} endif 10. else maxcl(k+1,r+1,l-1) 11. endif 7. end if
-----------------------得分10分
(2) 解向量采用等长的二进制编码(x1,x2,?,xn),其中n为图中顶
点的个数。
-----------------------得分2分 时间复杂度为O(n2n)。
-----------------------得分3分
(3)求解过程如下图所示(由于先选取x(k)=0的节点先生成,本实例造成的树太大,所以我们先生成x(k)=1的节点,不管那种做法,答案都算对),其中红色无字方框是不满足要求的中间节点,红色有字方框为被限界的中间节点,红色圆形为不满足要求的解,灰色圆形为满足要求的解。
(1,0,5)X(1)=1X(1)=0(2,1,4)X(2)=1X(2)=0(2,0,4)X(2)=1X(2)=0(3,1,3)X(3)=1X(3)=0(3,1,3)X(3)=1(3,0,3)X(3)=0(4,2,2)X(4)=1X(4)=0(4,1,2)(4,1,2)(5,3,1)X(5)=1X(5)=0mcl=3(5,1,1)
-----------------------得分5分
正在阅读:
2010年年度经典语录大集合08-09
机械加工工艺过程卡片拨叉05-19
关爱孤寡老人活动【优秀3篇】04-02
《旅游市场营销与策划》习题集11-04
C++ primer plus(第6版)中文版编程练习答案第10章10-06
心理课辅导活动优秀教案集05-24
高三化学复习练习:氧化还原反应07-21
电工基础知识试题(答案)08-31
尔雅通识课答案逻辑与批判性思维07-05
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 武汉大学
- 期中
- 算法
- 试卷
- 分析
- 设计
- 2015
- 面试中需要注意到的礼仪细节:发型、面容、对答
- 四川大学C++面向对象程序设计模拟试题2
- 中小学美术教师招聘考试题库(1)
- 大学生心理健康
- 《我对谁负责谁对我负责》教案1
- 医学类有机化学习题参考答案
- 新版外研版7年级下册课时作业 Module 10 A holiday journey Unit
- 中级财务管理(2014)第六章 投资管理 单元测试下载版
- 土壤微生物对植物所需各大中微量元素的转化作用
- 2018年气雾罐市场发展前景分析报告目录
- 素质与思想品德教育大作业要求
- 水土资源平衡分析
- 系统解剖学考点、重点整理
- 2019届 一轮复习通用版城市化学案+Word版含解析 - 图文
- 毕业论文-网络文学的快餐式现象
- 全国2013年01月自学考试00159《高级财务会计》历年真题及参考答
- 建筑CAD试卷A与答案
- 苏州工业园区合格证第四版参考题库答案
- 部编人教版五四制六年级上册第一单元综合能力测试题(一)
- 硕士生数值分析试卷答案2013