北京航空航天大学算法设计与分析试题答案

上传人:鲁** 文档编号:509102110 上传时间:2022-12-31 格式:DOC 页数:6 大小:100.50KB
返回 下载 相关 举报
北京航空航天大学算法设计与分析试题答案_第1页
第1页 / 共6页
北京航空航天大学算法设计与分析试题答案_第2页
第2页 / 共6页
北京航空航天大学算法设计与分析试题答案_第3页
第3页 / 共6页
北京航空航天大学算法设计与分析试题答案_第4页
第4页 / 共6页
北京航空航天大学算法设计与分析试题答案_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《北京航空航天大学算法设计与分析试题答案》由会员分享,可在线阅读,更多相关《北京航空航天大学算法设计与分析试题答案(6页珍藏版)》请在金锄头文库上搜索。

1、2006-2007学年第二学期计算机算法设计与分析试题院系:软件学院专业:软件工程年级:2004级一简答题(共10分) 略二. 计算题(35分)1. (6分)对下列各组函数 f(n)和 g(n),确定 f(n)=O(g(n)或 f(n)= Q (g(n)或 f(n)= B (g(n)。(1) f(n)=3n, g(n)=2n2(2) f(n)=log n + 5, g(n)=log n(2分)(2分)(2分)(3) f(n)=log n, g(n)= n 答:(1) f(n) = Q (g(n) f(n) = 9 (g(n)(3) f(n) = O(g(n)2. (8分)采用动态规划策略,计算

2、a=5,-3,7,-4,-5,9,-2,10,-3,2的最大子段和, 并给出这个最大子段和的起始下标和终止下标。设数组a中的元素下标从1开 始。要求给出过程。答:b1=5 ;b2=maxb1+a2 , a2=max2,-3=2 b3=maxb2+a3 , a3=max9,7=9 b4=maxb3+a4 , a4=max5,-4=5 b5=maxb4+a5 , a5=max0,-5=0 b6=maxb5+a6 , a6=max9,9=9 b7=maxb6+a7 , a7=max7,-2=7 b8=maxb7+a8 , a8=max17,10=17 b9=maxb8+a9 , a9=max14,-

3、3=14 b10=maxb9+a10 , a10=max16,2=16 (上述每两行1分,共5分) 最大子段和为17 (1分)(若数组下标从1开始)起始下标:6( 1分),终止下标:8( 1分)(若数组下标从0开始)起始下标:5(0.5分),终止下标:7 (0.5分)3. ( 11分)设有3件工作分配给3个人,将工作 i分配给第j个人所花的费用 为Cij ,现将为每一个人都分配1件不同的工作,并使总费用达到最小。设:823C2343 45要求:(1)画出该问题的解空间树;(6分)(2)写出该问题的剪枝策略(限界条件);(1分)(2分)(3)按回溯法搜索解空间树,并利用剪枝策略对应该剪掉的子树打

4、(4)最终给出该问题的最优值和最优解。(2分) 答:(1)122dbdddd16169999XXXX231 2 1(每个分枝1分,或者是每层2分,共6分) 当耗费大于等于当前最优值时,剪枝。(1分)(3)见上图。(每2个X 1分,共2分)(4)最优值:9(1分)最优解:2, 1,3001 电11*14.(8分)给定两个序列X=,Y=vB,D,C,A,B,请采用动态规划策略求出其最长公共子序列。要求给出过程。答:j 012345iyiBDCAB0 0 0 00Xi4 B 0112235 A 012223(上述表内每一行一分,共6分) 最长公共子序列为 (2分)5. (2 分)考虑 n=3 时的

5、0-1 背包问题的实例:W=15,10,10 , P=50,30,30,c=20。当 x1=1,x2=0 时,请计算 Bound(2)。答:Bound(3)=50+5/10 * 20 = 65(2 分)三、算法填空题(共10分,每空2分)给定n种物品和一个背包,物品i的重量是wi,其价值是pi,背包的容量为c。设物品已按单位重量价值递减的次序排序。每种物品不可以装入背包多次,但可以装入部分的物品i。求解背包问题的贪心算法如下:float Knapsack (float x , float w , float p ,float c, int n) float maxsum= ;/ maxsum表

6、示装进包的物品价值总和for ( int i=1;i0) xi=c/wi; ;return maxsum;答:(共5个空,每空2分,总计10分)0int i=1 ; i=n ;i +wi=Cpi maxsum+ = pi * c / wi四、算法设计及分析题(共45分)1. (20分)请用分治策略设计递归的二分检索算法,并分析其时间复杂性(要求给出每个阶段所花的时间, 在此基础上列出递归方程, 并求出其解的渐进阶) 答:(此题解法不唯一)算法:int bsearch(A,K,L,H)( 1 分) if (HK )(2 分)return(bsearch(A,K,L, mid-1) ;(2 分)e

7、lse return(bsearch(K, mid+1,H);(2 分)算法时间复杂性分析:(1分)(1分)(1分)(2分)(2分) Divide阶段所花时间为0(1)Conquer 阶段所花时间为 T(n/2)merge 阶段没有花时间(或者说, merge 阶段所花时间为 0(1) 算法时间复杂性递归方程如下:T(n)=0(1)当 nW 0T(n)= T(n/2)+0 (1)当 n1用套用公式法( master method )求解递归方程:a=1,b=2, nlogba nlog21 1f(n)=0(1),二 nlogba 与 f(n)同阶 T(n) = 0( log n) 2(15 分

8、)请用回溯法设计算法,用四种颜色给地图着色(若在调用了其它算 法,也需将该算法写出) 。请在每个循环语句和条件判断语句后加注释。 答:(此题解法不唯一)算法:boolColor:0k(int k) for (int j=1; jvk; j+)/检查前k-1个点与当前点(第k点)颜色是否冲突(2分) if (akj=1)&(xj=xk)判断第j点与当前点(第k点)颜色是否冲突(2分)return false;(1 分 )else return true;(1 分 )void Color:Backtrack(int t)(1分) if (t n) / 判断是否到叶节点 sum+;for (int

9、i=1;i=n; i+) / 输出每个点的色号cout xi ;cout endl;elsefor (int i=1; i=4; i+)/依次检查当前点(第 t点)是否可着第i(1 i 4)种颜色 xt=i;if (Ok(t) Backtrack(t+1); /若当前点(第t点)可着第i种颜色,则递归调用2 分)(2分)(1 分 )(3分)3( 10 分) 请设计一个算法,实现优先队列的出队操作。要求:(2)用 C 语言描述算法。 答:(此题解法不唯一)(1)用堆实现优先队列。(2)算法 SIFT(k,i,m) temp = ki;j=2*i; while (j=m) if ( jm)&2 分)(1分)(1分)Rj.keyRj+1.key )j+;(1分)(1)指出用什么数据结构实现优先队列;if (temp.key Rj.key )(1 分) Ri = Rj;i=j; j=2*i ;(1 分)else break;(0.5 分 )Ri=temp;(0.5 分 )Delete(n) temp = R1; R1=Ri; Ri=temp;(1 分 )SIFT(k,1,n-1);(1 分)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号