湖南大学算法设计与分析期中试题及答案
《算法设计与分析》考试题目及答案(DOC)

《算法设计与分析》考试题目及答案(DOC)D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。
A.广度优先B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分支限界法在问题的解空间树中,按(A)策略,从根结点出发搜索解空间树。
A.广度优先B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块(A)是回溯法中遍历排列树的算法框架程序。
A.B.C.D. void backtrack (int t){if (t>n) output(x);elsefor (int i=t;i<=n;i++) {swap(x[t], x[i]);if (legal(t)) backtrack(t+1); swap(x[t], x[i]);}}void backtrack (int t){if (t>n) output(x);elsefor (int i=0;i<=1;i++) {x[t]=i;if (legal(t)) backtrack(t+1); }}10. 回溯法的效率不依赖于以下哪一个因素?(C )A.产生x[k]的时间;B.满足显约束的x[k]值的个数;C.问题的解空间的形式;D.计算上界函数bound的时间;E.满足约束函数和上界函数约束的所有x[k]的个数。
F.计算约束函数constraint的时间;11. 常见的两种分支限界法为(D)A. 广度优先分支限界法与深度优先分支限界法;B. 队列式(FIFO)分支限界法与堆栈式分支限界法;C. 排列树法与子集树法;D. 队列式(FIFO)分支限界法与优先队列式分支限界法;12. k带图灵机的空间复杂性S(n)是指(B)A.k带图灵机处理所有长度为n的输入时,在某条带上所使用过的最大方格数。
B.k带图灵机处理所有长度为n的输入时,在k条带上所使用过的方格数的总和。
C.k带图灵机处理所有长度为n的输入时,在k条带上所使用过的平均方格数。
算法设计与分析试题及答案

1. 按分治策略求解棋盘覆盖问题时,对于如图所示的24×24的特殊棋盘,共需要多少个L 型骨牌;并在棋盘上填写L 型骨牌的覆盖情况。
2. 假设有7个物品,给出重量和价值。
若这些物品均不能被分割,且背包容量M =140,使用回溯方法求解此0-1背包问题。
请画出状态空间搜索树。
3. 假设有7个物品,它们的重量和价值如下表所示。
若这些物品均可以被分割,且背包容量M=140,使用贪心算法求解此背包问题。
请写出求解策略和求解过程。
W (35,30,50,60,40,10,25)p (10,40,30,50,35,40,30)4. 在给出的电路板中,阴影部分是已作了封锁标记的方格,请按照队列式分支限界法在图中确定a 到b 的最短布线方案,要求布线时只能沿直线或直角进行,在图中标出求得最优解时各方格情况。
5. 画出字符表的哈夫曼编码对应的二叉树。
6. 已知1()*()i i k k ij r r A a +=,k =1,2,3,4,5,6,r 1=5,r 2=10,r 3=3,r 4=8,r 5=5,r 6=20,r 7=6,求矩阵链积A 1×A 2×A 3×A 4×A 5×A 6的最佳求积顺序。
7. 给出城市网络图,售货员要从城市1出发,经过所有城市回到城市1,画出该问题的解空间树,描述出用优先队列式分支限界法求解时的搜索情况。
表示出优先队列、当前扩展结点等的变化情况。
8. 依据优先队列式分支限界法,求从s 点到t 点的单源最短路径,画出求得最优解的解空间树。
一、假设有7个物品,它们的重量和价值如下表所示。
若这些物品均不能被分割,且背包容量M=150,使用回溯方法求解此背包问题。
请写出状态空间搜索树(20分)。
答:按照单位效益从大到小依次排列这7个物品为:FBGDECA 。
将它们的序号分别记为1~7。
则可生产如下的状态空间搜索树。
其中各个节点处的限界函数值通过如下方式求得:【排序1分】5x =6x =7x =17分,每个节点1分】a .1501154040305035190.62540-++++⨯=7(1,1,1,1,,0,0)8b. 1501154040305030177.560-++++⨯=7(1,1,1,1,0,,0)12c .4040305010170++++=(1,1,1,1,0,0,1)d. 1501054040303530167.560-++++⨯=3(1,1,1,0,1,,0)4e. 150130404050353017560-++++⨯=1(1,1,0,1,1,,0)3f. 1501304040503510170.7135-++++⨯=4(1,1,0,1,1,0,)7g. 40405030160+++=(1,1,0,1,0,1,0)h. 1501404040353010146.8535-++++⨯=2(1,1,0,0,1,1,)7i.1501254030503530167.560-++++⨯=5(1,0,1,1,1,,0)12 j. 1501454030503530157.560-++++⨯=1(0,1,1,1,1,,0)12在Q 1处获得该问题的最优解为(1,1,1,1,0,0,1),背包效益为170。
算法设计与分析试卷试题(A)(附答案)

chengcheng算法分析考试试卷(A卷)课程名称算法分析编号题号一二三四总分得分评阅人一、填空题(每小题3分,共30分)1、一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
2、这种不断回头寻找目标的方法称为回溯法。
3、直接或间接地调用自身的算法称为递归算法。
4、 记号在算法复杂性的表示法中表示紧致界。
5、由分治法产生的子问题往往是原问题较小模式,这就为使用递归技术提供了方便。
6、建立计算模型的目的是为了使问题的计算复杂性分析有一个共同的客观尺度。
7、下列各步骤的先后顺序是②③④①。
①调试程序②分析问题③设计算法④编写程序。
8、最优子结构性质的含义是问题最优解包含其子问题最优解。
9、贪心算法从初始阶段开始,每一个阶段总是作一个使局部最优的贪心选择。
10、拉斯维加斯算法找到的解一定是正确的。
二、选择题(每小题2分,共20分)1、哈夫曼编码可利用( C )算法实现。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是基本计算模型的是( B )。
A、RAMB、ROMC、RASPD、TM3、下列算法中通常以自顶向下的方式求解最优解的是( C)。
A、分治法B、动态规划法C、贪心法D、回溯法chengcheng 4、在对问题的解空间树进行搜索的方法中,一个活结点有多次机会成为活结点的是( A )A、回溯法B、分支限界法C、回溯法和分支限界法D、动态规划5、秦始皇吞并六国使用的远交近攻,逐个击破的连横策略采用了以下哪种算法思想? BA、递归;B、分治;C、迭代;D、模拟。
6、FIFO是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法7、投点法是( B )的一种。
A、分支界限算法B、概率算法C、贪心算法D、回溯算法8、若线性规划问题存在最优解,它一定不在( C )A.可行域的某个顶点上 B.可行域的某条边上 C.可行域内部 D.以上都不对9、在一般输入数据的程序里,输入多多少少会影响到算法的计算复杂度,为了消除这种影响可用( B )对输入进行预处理。
算法分析与设计期中练习

算法分析与设计期中练习一、选择题1. 实践表明可操作性最好且最有实际价值的是(B)情况下的时间复杂性。
A.最好B.最坏C.平均D.特殊2. 算法的时间复杂性函数用T(n)表示,其中参数n是指( A )。
A.问题规模B.运行时间C.输入量D.输出量3. 函数105logn2+n2logn+n3的渐近表达式为(C)。
A.logn2B.n2lognC.n3D. 1054. 二分搜索算法中,如果待查找元素x不在已排好序的n个元素中,则完成该搜索任务需用(B)时间。
A.O(nlogn)B.O(logn)C.O(n)D.O(n2)5. Strassen矩阵乘法问题中,改进算法的计算复杂性关键在于( A )。
A.减少矩阵乘法B.增加矩阵乘法C.减少矩阵加法D.增加矩阵加法6. 最优子结构和重叠子问题是(A)算法的两个基本要素。
A.动态规划B. 贪心C.分支限界D. 分治7. 使用贪心算法解决活动安排问题时使用了(B)优先的贪心选择策略。
A.最早开始活动B.最早结束活动C.时间最短活动D.时间最长活动8. f(n)= log7n,g(n)= 100logn,满足f(n)= ( B )(g(n))。
A. OB.ΩC.Θ9. f(n)= logn8,g(n)= log(100n),满足f(n)= (C)(g(n))。
A. OB.ΩC.Θ10. f(n)= 30(logn)10,g(n)= 30n5,满足f(n)= (A)(g(n))。
A. OB.ΩC.Θ11. f(n)= 105n,g(n)= log10n,满足f(n)= ( C )(g(n))。
A. OB.ΩC.Θ12. f(n)= 4n ,g(n)= 410(3n),满足f(n)= (B)(g(n))。
A. OB.ΩC.Θ13. 贪心法解装载问题时,采用的解题策略是(B)。
P95A.平均分配两艘轮船的载重B. 按集装箱重量从轻至重装船C. 将第一艘轮船尽可能装满D. 将第二艘轮船尽可能装满14. 用回溯法解0-1背包问题时,解空间可构造为(C)的形式。
(完整版)算法设计与分析考试题及答案,推荐文档

____________________________________。 4.若序列 X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列
X 和 Y 的一个最长公共子序列_____________________________。 5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至
和
之分。
5、 f(n)= 6×2n+n2,f(n)的渐进性态 f(n)= O(
)
6、 贪心算法总是做出在当前看来
的选择。也就是说贪心算法并不从整体最优考
虑,它所做出的选择只是在某种意义上的
。
7、 许多可以用贪心算法求解的问题一般具有 2 个重要的性质:
性质和
性质。
二、简答题(本题 25 分,每小题 5 分)
五、算法理解题(本题 5 分) 设有 n=2k 个运动员要进行循环赛,
现设计一个满足以下要求的比赛日程表:
①每个选手必须与其他 n-1 名选手比赛各一次; ②每个选手一天至多只能赛一次;
③循环赛要在最短时间内完成。
我去(人1)如也果 就n=2k有,循人环赛!最少为需要U进R行扼几天腕; 入站内信不存在向你偶同意调剖沙 (2)当 n=23=8 时,请画出循环赛日程表。
六、算法设计题(本题 15 分) 分别用贪心算法、动态规划法、回溯法设计 0-1 背包问题。要求:说明所使用的算法
策略;写出算法实现的主要步骤;分析算法的时间。 七、算法设计题(本题 10 分)
建议收藏下载本文,以便随时学习! 通过键盘输入一个高精度的正整数 n(n 的有效位数≤240),去掉其中任意 s 个数字后, 剩下的数字按原左右次序将组成一个新的正整数。编程对给定的 n 和 s,寻找一种方案, 使得剩下的数字组成的新数最小。 【样例输入】 178543 S=4 【样例输出】 13
算法设计与分析(试题B卷)

《算法设计与分析》答卷说明: 1、考试方式闭卷2、满分100分题号一二三四五六七总分总分人分数得分评卷人一、单项选择题(每小题2分,共20分)1、下面关于NP问题说法正确的是()。
A 、NP问题都是不可能解决的问题B 、P类问题包含在NP类问题中C 、NP完全问题是P类问题的子集D 、NP类问题包含在P类问题中2、能采用贪心算法求最优解的问题,一般具有的重要性质为:()A、最优子结构性质与贪心选择性质B、重叠子问题性质与贪心选择性质C、最优子结构性质与重叠子问题性质D、预排序与递归调用3、实现合并排序利用的算法是()。
A、分治策略B、动态规划法C、贪心法D、回溯法4、以下不可以使用分治法求解的是()。
A、棋盘覆盖问题B、选择问题C、归并排序D、0/1背包问题5、记号O的定义正确的是()。
A、O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ f(n) ≤cg(n) };B、O(g(n)) = { f(n) | 存在正常数c和n0使得对所有n≥n0有:0≤ cg(n) ≤f(n) };C、O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n>0使得对所有n≥n0有:0 ≤f(n)<cg(n) };D、O(g(n)) = { f(n) | 对于任何正常数c>0,存在正数和n>0使得对所有n≥n0有:0 ≤cg(n) < f(n) };6、使用分治法求解不需要满足的条件是()。
A、子问题必须是一样的B、子问题不能够重复C、子问题的解可以合并D、原问题和子问题使用相同的方法解7、以下关于渐进记号的性质是正确的有:()A、f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ⇒=ΘB、f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==⇒=C、O(f(n))+O(g(n)) = O(min{f(n),g(n)})D、f(n)O(g(n))g(n)O(f(n))=⇔=8、衡量一个算法好坏的标准是()。
算法设计分析期中试题.pdf

算法设计分析期中试题.pdf《算法设计与分析》期中试卷一、叙述分治算法的基本思想及一般算法设计模式;二、叙述动态规划算法的基本步骤及动态规划算法的基本要素;三、改进课本P74的Lcs算法,使改进算法不用数组b亦可在O(m+n)的时间内构造最长公共序列;四、求下列函数的渐近表达式(1). 3n2+10n(2).n2/10+2n(3)21+1/n(4)logn3(5)10log3n五、对于下列各组函数发f(n)和g(n),确定f(n)=O((g(n)))或者f(n)= ((g(n)))或者f(n)=θ((g(n))),并简述理由(1). f(n)=logn2 , g(n)=logn+5;(2). f(n)=logn2 , g(n)= √n;(3), f(n)=n, g(n)= logn2;(4). f(n)=nlogn+n,g(n)=logn;(5). f(n)=10.g(n)=log10;(6). f(n)=log2n g(n)=logn(7). f(n)=2n g(n)= 3n;(8). f(n)=2n g(n)= 100n2;六、设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当搜索元素x不再数组中时,返回小于x的最大元素位置i和大于x 的最小元素位置j。
当搜索元素在数组中时,i和j相同,均为x 在数组中的位置七、设a[0:n-1]是有n个元素的数组,k(0<=k<=n-1)是非负整数。
试设计一个算法将子数组a[0:k]与a[k+1:n-1]换位。
要求算法在最坏的情况下耗时O(n),且只用到O(1)的辅助空间。
八、在一个由元素组成的表中出现次数最多的元素称为众数。
试写一个寻找众数的算法,并分析其计算复杂性。
九、设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。
十、给定n中物品和一背包,物品i的重量是ω,体积是b i,其价值为v i ,背包的容量为C,容积为D。
湖南大学复习算法分析期末答案大题

一、解答题1.机器调度问题。
问题描述:现在有n件任务和无限多台的机器,任务可以在机器上得到处理。
每件任务的开始时间为s i,完成时间为f i,s i<f i 。
[s i,f i]为处理任务i 的时间围。
两个任务i,j重叠指两个任务的时间围区间有重叠,而并非指i,j的起点或终点重合。
例如:区间[1,4]与区间[2,4]重叠,而与[4,7]不重叠。
一个可行的任务分配是指在分配中没有两件重叠的任务分配给同一台机器。
因此,在可行的分配中每台机器在任何时刻最多只处理一个任务。
最优分配是指使用的机器最少的可行分配方案。
问题实例:若任务占用的时间围是{[1,4],[2,5],[4,5],[2,6],[4,7]},则按时完成所有任务最少需要几台机器?(提示:使用贪心算法)画出工作在对应的机器上的分配情况。
3. 单源最短路径的求解。
问题的描述:给定带权有向图(如下图所示)G =(V,E),其中每条边的权是非负实数。
另外,还给定V中的一个顶点,称为源。
现在要计算从源到所有其它各顶点的最短路长度。
这里路的长度是指路上各边权之和。
这个问题通常称为单源最短路径问题。
解法:现采用Dijkstra算法计算从源顶点1到其它顶点间最短路径。
请将此过程填入下表中。
110030maxint10-{1}初始dist[5]dist[4]dist[3]dist[2]uS迭代7. 最长公共子序列问题:给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。
由最长公共子序列问题的最优子结构性质建立子问题最优值的递归关系。
用c[i][j]记录序列Xi和Yj的最长公共子序列的长度。
其中,Xi={x1,x2,…,xi};Yj={y1,y2,…,yj}。
当i=0或j=0时,空序列是Xi和Yj的最长公共子序列。
故此时C[i][j]=0。
其它情况下,由最优子结构性质可建立递归关系如下:00,0 [][][1][1]1,0;max{[][1],[1][]},0;i ji ji jc i j c i j i j x yc i j c i j i j x y⎧==⎪=--+>=⎨⎪-->≠⎩在程序中,b[i][j]记录C[i][j]的值是由哪一个子问题的解得到的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、函数渐进阶。
对于下列各组f(x)和g(x),确定他们的关
系(15分)
a)f(x)=log n10+1;g(x)= log n – 10
b)f(x)=5 n10;g(x)=10n
c)f(x)=;g(x)= log n +5
二、设n个不同的整数排好序后存于T[0:n-1]中。
若存在下
标i,0≤i<n,使得T[i]=i,试设计一个时间复杂度为O(logn)的算法找到该下标(15分),并用C/C++编程实现(10分)。
三、分别用贪心算法(20分)、动态规划法(20分)设计
求解0-1背包问题的算法。
要求:1.说明算法策略(每种方法5分);2.主要算法步骤(10分);3.分析算法的时间复杂度(5分)
四、试设计解决TSP问题的贪心算法(10分),分析时间
复杂度(5分),试分析是否存在O(n2log n)的有效算法(5分)。
1函数渐进阶。
对于下列各组f(x)和g(x),确定他们的关系(15分)
a)f(x)=log n10+1;g(x)= log n – 10
b)f(x)=5 n10;g(x)=10n
c)f(x)=;g(x)= log n +5
2设n个不同的整数排好序后存于T[0:n-1]中。
若下标i,0≤i<n,使得T[i]=i,试设计一个时间复杂度为O(logn)的存在算法找到该下标(15分),并用C/C++编程实现(10分)。
解答:由题可知,数组T[ ]是排列好的整数集。
可以用二分搜索的算法对问题进行操作。
取中间值T[mid],如果T[mid]=mid则可以返回mid;如果T[mid]<mid在mid+1到n-1之间进行上述操作;如果T[mid]>mid在0到mid-1之间进行上述操作。
Int Findi(int T[],int m,int n)
{
Int mid=(m+n)/2;
If (T[mid]==mid) return mid;
else if(T[mid]>mid) return Findi(T[],m,mid-1);
else return Findi(T[],mid+1,n);
}
算法设计:
输入:一个数组T[ ],起始地址m,末端地址n
比较指定数组位置的中间元素T[(m+n)/2]与中间地址(m+n)/2.
1)如果T[(m+n)/2]等于(m+n)/2,则返回(m+n)/2;
2)如果T[(m+n)/2]大于(m+n)/2,则返回在数组T[ ]中m位到(m+n)/2-1之间进行此算法的返回值;
3)如果T[(m+n)/2]小于(m+n)/2,则返回在数组T[ ]中(m+n)/2+1到n之间进行此算法的返回值;
输出:一个值,若存在则返回i;若不存在则返回0.
3分别用贪心算法(20分)、动态规划法(20分)设计求解0-1背包问题的算法。
要求:1.说明算法策略(每种方法5分);2.主要算法步骤(10分);3.分析算法的时间复杂度(5分)
4试设计解决TSP问题的贪心算法(10分),分析时间复杂度O(n2)(5分),试分析是否存在O(n2log n)的有效算法(5分)。
答:
贪心策略:在当前节点下遍历所有能到达的下一节点,选择距离最近的节点作为下一节点。
基本思路:
1、从一节点出发遍历所有能到达的下一节点,选择距离最近的节点作为下一节点;
2、然后把当前节点标记已走过,下一节点作为当前节点,重复贪心策略,以此类推直至所有节点都标记为已走节点结束。
3、用最短路径问题寻找到达始发点的最短路径,返回出发
点。