收藏 分享(赏)

2009.1算法设计与分析课程期末试卷-A卷(自测 ).doc

上传人:HR专家 文档编号:5920553 上传时间:2019-03-21 格式:DOC 页数:9 大小:178.31KB
下载 相关 举报
2009.1算法设计与分析课程期末试卷-A卷(自测 ).doc_第1页
第1页 / 共9页
2009.1算法设计与分析课程期末试卷-A卷(自测 ).doc_第2页
第2页 / 共9页
2009.1算法设计与分析课程期末试卷-A卷(自测 ).doc_第3页
第3页 / 共9页
2009.1算法设计与分析课程期末试卷-A卷(自测 ).doc_第4页
第4页 / 共9页
2009.1算法设计与分析课程期末试卷-A卷(自测 ).doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、1华南农业大学期末考试试卷(A 卷)2008 学年第一学期 考试科目: 算法分析与设计 考试类型:(闭卷) 考试时间: 120 分钟学号 姓名 年级专业 题号 一 二 三 四 总分得分评阅人一、选择题(20 分,每题 2 分)1. 下述表达不正确的是 。 An 2/2 + 2n 的渐进表达式上界函数是 O(2n)Bn 2/2 + 2n 的渐进表达式下界函数是 (2n)Clogn 3 的渐进表达式上界函数是 O(logn)Dlogn 3 的渐进表达式下界函数是 (n3)2. 当输入规模为 n 时,算法增长率最大的是 。 A5 n B20log 2n C2n 2 D3nlog 3n3. T(n)表

2、示当输入规模为 n 时的算法效率,以下算法效率最优的是 。 AT(n)= T(n 1)+1,T(1)=1 BT(n)= 2n2CT(n)= T(n/2)+1 ,T (1)=1 DT(n)= 3nlog 2n4. 在棋盘覆盖问题中,对于 2k2k 的特殊棋盘(有一个特殊方块) ,所需的 L 型骨牌的个数是 。 A (4 k 1)/3 B2 k /3 C4 k D2 k5. 在寻找 n 个元素中第 k 小元素问题中,若使用快速排序算法思想,运用分治算法对 n 个元素进行划分,应如何选择划分基准?下面 答案解释最合理。 A随机选择一个元素作为划分基准B取子序列的第一个元素作为划分基准C用中位数的中位

3、数方法寻找划分基准D以上皆可行。但不同方法,算法复杂度上界可能不同26. 有 9 个村庄,其坐标位置如下表所示:i 1 2 3 4 5 6 7 8 9x(i) 1 2 3 4 5 6 7 8 9y(i) 1 2 3 4 5 6 7 8 9现在要盖一所邮局为这 9 个村庄服务,请问邮局应该盖在 才能使到邮局到这9 个村庄的总距离和最短。 A (4.5,0) B (4.5, 4.5) C (5,5) D (5,0)7. n 个人拎着水桶在一个水龙头前面排队打水,水桶有大有小,水桶必须打满水,水流恒定。如下 说法不正确? A让水桶大的人先打水,可以使得每个人排队时间之和最小B让水桶小的人先打水,可以

4、使得每个人排队时间之和最小C让水桶小的人先打水,在某个确定的时间 t 内,可以让尽可能多的人打上水D若要在尽可能短的时间内, n 个人都打完水,按照什么顺序其实都一样8. 分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。这要求原问题和子问题 。 A问题规模相同,问题性质相同 B问题规模相同,问题性质不同C问题规模不同,问题性质相同 D问题规模不同,问题性质不同9. 对布线问题,以下 是不正确描述。 A布线问题的解空间是一个图B可以对方格阵列四周设置围墙,即增设标记的附加方格的预处理,使得算法简化对边界的判定C采用广度优

5、先的标号法找到从起点到终点的布线方案(这个方案如果存在的话)不一定是最短的D采用先入先出的队列作为活结点表,以终点 b 为扩展结点或活结点队列为空作为算法结束条件10. 对于含有 n 个元素的子集树问题,最坏情况下其解空间的叶结点数目为 。 An! B2 n C2 n+1-1 D ni1!/答案:DACAD CACCB3二、填空题(10 分,每题 2 分)1、一个算法复杂性的高低体现在计算机运行该算法所需的时间和存储器资源上,因此算法的复杂性有 时间 复杂性和空间复杂性之分。2、出自于“平衡子问题”的思想,通常分治法在分割原问题,形成若干子问题时,这些子问题的规模都大致 相同 。3、使用二分搜

6、索算法在 n 个有序元素表中搜索一个特定元素,在最佳情况下,搜索的时间复杂性为 O( 1 ) ,在最坏情况下,搜索的时间复杂性为 O( logn ) 。4、已知一个分治算法耗费的计算时间 T(n),T(n)满足如下递归方程:221nnTO)(/()(解得此递归方可得 T(n)= O( nlogn ) 。5、动态规划算法有一个变形方法 备忘录方法 。这种方法不同于动态规划算法“自底向上”的填充方向,而是“自顶向下”的递归方向,为每个解过的子问题建立了备忘录以备需要时查看,同样也可避免相同子问题的重复求解。参考解答:1、时间 2、相同 3、1 logn 4、 5、备忘录方法logn三、简答题(40

7、 分,每题 8 分)1、 (8 分)写出下列复杂性函数的偏序关系(即按照渐进阶从低到高排序): 2323log!log10n nn参考解答: 3 210ll3!nn2、 (8 分)现在有 8 位运动员要进行网球循环赛,要设计一个满足以下要求的比赛日程表:4(1) 每个选手必须与其他选手各赛一次;(2) 每个选手一天只能赛一次;(3) 循环赛一共进行 n 1 天。请利用分治法的思想,给这 8 位运动员设计一个合理的比赛日程。参考解答:1 2 3 4 5 6 7 82 1 4 3 6 5 8 73 4 1 2 7 8 5 64 3 2 1 8 7 6 55 6 7 8 1 2 3 46 5 8 7

8、 2 1 4 37 8 5 6 3 4 1 28 7 6 5 4 3 2 13、 (8 分)某体育馆有一羽毛球场出租,现在总共有 10 位客户申请租用此羽毛球场,每个客户所租用的时间单元如下表所示,s(i)表示开始租用时刻,f(i) 表示结束租用时刻,10 个客户的申请如下表所示:i 1 2 3 4 5 6 7 8 9 10s(i) 0 3 1 5 3 5 11 8 8 6f(i) 6 5 4 9 8 7 13 12 11 10同一时刻,该羽毛球场只能租借给一位客户,请设计一个租用安排方案,在这 10位客户里面,使得体育馆能尽可能满足多位客户的需求,并算出针对上表的 10 个客户申请,最多可以

9、安排几位客户申请。参考解答:将这 10 位客户的申请按照结束时间 f(i)递增排序,如下表:i 1 2 3 4 5 6 7 8 9 10s(i) 1 3 0 5 3 5 6 8 8 11f(i) 4 5 6 7 8 9 10 11 12 131) 选择申请 1(1,4)2) 依次检查后续客户申请,只要与已选择的申请相容不冲突,则选择该申请。直到所有申请检查完毕。申请 4(5,7) 、申请 8(8,11) 、申请 10(11,13)3) 最后,可以满足:申请 1(1,4) 、申请 4(5,7) 、申请 8(8,11) 、申请10(11,13)共 4 个客户申请。这已经是可以满足的最大客户人数。4

10、、 (8 分)对于矩阵连乘所需最少数乘次数问题,其递归关系式为:51ikj 0,mn,ikjijijkjp 其中 mi,j 为计算矩阵连乘 AiAj 所需的最少数乘次数,p i-1 为矩阵 Ai 的行, 为ip矩阵 Ai 的列。现有四个矩阵,其中各矩阵维数分别为:A1 A2 A3 A45010 1040 4030 305p 0 p 1 p 1 p 2 p 2 p 3 p 3 p 4请根据以上的递归关系,计算出矩阵连乘积 A1A2A3A4 所需要的最少数乘次数。参考解答: 0142380510514min12643634705p 5、 (8 分)有这样一类特殊 0-1 背包问题:可选物品重量越轻

11、的物品价值越高。n=6,c=20,P=(4,8,15,1,6,3) ,W=(5,3,2,10,4,8) 。其中 n 为物品个数,c 为背包载重量,P 表示物品的价值,W 表示物品的重量。请问对于此 0-1 背包问题,应如何选择放进去的物品,才能使到放进背包的物品总价值最大,能获得的最大总价值多少?参考解答:因为该 01 背包问题比较特殊,恰好重量越轻的物品价值越高,所以优先取重量轻的物品放进背包。最终可以把重量分别为 2,3,4,5 的三个物品放进背包,得到的价值和为 15 + 8 + 6 + 4 = 33,为最大值。四、算法设计题(30 分,前三题每题 8 分,最后一题 6 分)1、 【最优

12、服务次序问题】 (8 分) 提示:此题可采用贪心算法实现问题描述:设有 n 个顾客同时等待一项服务,顾客 i 需要的服务时间为ti,11 时,格雷码的长度为 ,即共有 个码序列。此时,将问题一分为二,n2n即上半部分和下半部分。上半部分最高位设为 0,下半部分最高位设为 1。剩下 n-1 位的格雷码的构造采用递归的思路。评分准则:1) 答到使用分治算法,并且推导出分治算法的过程,边界设定清晰(即当仅输出 1 位的格雷码如何处理) ,本题即可得满分;2) 说明使用分治算法,但漏边界条件,扣 2 分以上;3) 其它情况酌情考虑。3、 【最长上升子序列问题】 (8 分) 提示:此题可采用动态规划算法

13、实现对于给定的一个序列 , 。我们可以得到一些递增上12(,)Na 10升的子序列 ,这里 。比如,对于序列(1, 7, 3, 12(,)iiK 2KiiN5, 9, 4, 8),有它的一些上升子序列,如 (1, 7), (3, 4, 8)等等。这些子序列中最长的长度是 4,比如子序列(1, 3, 5, 8)。你的任务:就是对于给定的序列,求出最长上升子序列的长度。要求写出你设计的算法思想及递推函数的公式表达。参考解答:设 表示:从左向右扫描过来直到以 元素结尾的序列,获得的()fi ai7最长上升子序列的长度,且子序列包含 元素( ) 。ai1in()mx():;11;()fifjijii

14、aj当 ,都 有即, 是从 , 到 中找最大的一个值,再加 1。或者就是fif21fi1。主要是看 ai这个元素能否加入到之前已经获得的最长上升子序列,如果能加入,是之前已获得的最长上升子序列长度加一;如果不能加入,就取这最后一个元素作为一个单独子序列,长度为 1。最后,所要求的整个序列的最长公共子序列长度为 maxf(i): 1=i=n例如,对于序列:4 2 6 3 1 5 2i 1 2 3 4 5 6 7array 4 2 6 3 1 5 2f(i) 1 1 2 2 1 3 2评分准则:1) 答到使用动态规划算法,并且推导出动态规划算法的递推函数公式表达,边界设定清晰,本题即可得满分;(阅

15、卷时仔细看递推公式表达,公式表达含义正确即可,因其表达形式可能不唯一)2) 说明使用动态规划算法,但对递推函数表达错误或含糊,扣 2 分以上;3) 其它情况酌情考虑。4、 【骑士问题】 (6 分) 提示:此题可采用广度优先搜索算法实现在一个标准 88 的国际象棋棋盘上,棋盘中有些格子是可能有障碍物的。已知骑士的初始位置和目标位置,你的任务是计算出骑士最少需要多少步可以从初始位置到达目标位置,若无法到达目标位置,输出“not reachable”。请用文字或伪代码说明你的算法。注意:骑士只能进行“日”字行对角跳,棋盘上有障碍物的格子不能到达。8图(a):骑士能进行的“日”字行对角跳,n 为骑士当

16、前位置,x 为骑士下一步可以跳到的格子图(b):骑士从初始位置 n 到目标位置 N,最小需要 7 步的实例。b 为棋盘障碍参考解答:这也是一个搜索的题目,非常类似于书上的“布线问题” ,可参考书上此例。用一个二维数组 board1212来记录棋盘的状况。为何大小是 12*12 呢?棋盘大小 8*8,为了减少对周围边界的判断,在上下左右四边各加上 2 行 2 列做“围墙” (障碍) ,因此 board 棋盘的大小 12*12。有如下几个步骤需要解决:1) 障碍格子:将输入的障碍格子填写到 board 当中对应格上,设置为-1;2) 起始格子和结束格子:将起始点 start 和结束点 end,这两

17、个点记录下来,在 board 中这两个格子设置为 0;3) 围墙:在 8*8 的棋盘外面,上下左右各加 2 行 2 列做围墙,围墙和障碍一样,设置为-1;94) 除障碍围墙起始结束格子这些格子特殊对待输入之外,其余格子全部初始化为 0;5) 队列初始为空。队列是用来在骑士做 “日字型”对角跳的时候,候选位置放入队列中的一个辅助的数据结构,以便于“广度优先搜索” 。6) 从起点开始,将这个位置所能跳的周围 8 个位置都检查一下:只要未标记,就标记为前一个位置值加 1,并将该格子位置加入队列;如果不能标记(比如障碍或围墙等) ,就跳过,继续检查下一个位置,一共骑士所能跳的 8 个位置。7) 取出队列首个位置结点,又继续检查这个结点周围的 8 个位置,类同上一步,直到找到对终点标记位置。8) 最后,输出终点所标记的数值(正数) ,就是骑士所需的最少移动步数,若为0 表示终点无法标记到,输出:“not reachable”这样的信息。评分准则:1) 答到使用搜索算法,并且说明采用广度优先的搜索策略,算法描述清晰准确,本题即可得满分; 2) 算法表达含糊或不准确,扣 2 分以上;3) 其它情况酌情考虑。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报