2015武汉大学《算法设计与分析》期中试卷
《算法设计与分析》考试题目及答案(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。
武汉大学计算机学院《算法设计与分析》考试试卷
武汉大学计算机学院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,87625、(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,76、(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)根据搜索树,列出最优的周游路线和其对应的成本值。
算法设计与分析复习题目及答案1
1一、选择题1、二分搜索算法是利用〔 A 〕实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、以下不是动态规划算法根本步骤的是〔 A 〕。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是〔 A 〕的搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是〔B 〕。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.以下算法中通常以自底向上的方式求解最优解的是〔 B 〕。
A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是〔C 〕。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是〔D 〕。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是〔 A 〕。
A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是〔 D 〕。
1A、广度优先B、最小消耗优先C、最大效益优先D、深度优先10.以下算法中通常以深度优先方式系统搜索问题解的是〔 D 〕。
A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。
〔 B 〕A、分治法B、动态规划法C、贪心法D、回溯法12.哈弗曼编码的贪心算法所需的计算时间为〔 B 〕。
A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕13.分支限界法解最大团问题时,活结点表的组织形式是〔 B 〕。
A、最小堆B、最大堆C、栈D、数组14.最长公共子序列算法利用的算法是〔 B 〕。
A、分支界限法B、动态规划法C、贪心法D、回溯法15.实现棋盘覆盖算法利用的算法是〔 A 〕。
A、分治法B、动态规划法C、贪心法D、回溯法〔 C 〕。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解17.回溯法的效率不依赖于以下哪些因素〔 D 〕A. 满足显约束的值的个数B. 计算约束函数的时间C. 计算限界函数的时间D. 确定解空间的时间〔 B 〕A.递归函数 B.剪枝函数 C.随机数函数 D.搜索函数19、下面关于NP问题说法正确的选项是〔B 〕A NP问题都是不可能解决的问题B P类问题包含在NP类问题中C NP完全问题是P类问题的子集D NP类问题包含在P类问题中20蒙特卡罗算法是〔 B 〕的一种。
算法设计期中试卷、平时作业参考解答
《算法分析与设计》2012-2013-2学期期中测试(信息安全专业DQ 教学班)姓名: 学号: 得分:1. 证明()()()()()()()O f n O g n O f n g n +=+。
(10分)证明:对于任意f 1(n ) ∈ O (f (n )),存在正常数c 1和自然数n 1,使得对所有n ≥ n 1,有f 1(n ) ≤ c 1f (n )成立。
类似,对于任意g 1(n ) ∈ O (g (n )),存在正常数c 2和自然数n 2,使得对所有n ≥ n 2,有g 1(n ) ≤ c 2g (n )成立。
令c 3 = max{c 1, c 2},n 3 = max{n 1, n 2},则对所有的n ≥ n 3,有 f 1(n ) +g 1(n ) ≤ c 1f (n ) + c 2g (n ) ≤ c 3f (n ) + c 3g (n ) = c 3(f (n ) + g (n ))即()()()()()()()O f n O g n O f n g n +=+成立。
2. 将下列5个函数按渐近增长率由低至高进行排序,要求写出比较过程。
(15分)解: 100log 2log log log 24()log 100log ,()2log ,n n n f n n n f n n n +====(1) 2()f n 是对数函数的幂,5()f n 是幂函数,因此()25()()f n O f n =; (2) ()()()491105log limlimlim log n n n f n n nn n f n n →∞→∞→∞===∞,因此()54()()f n O f n =; (3) ()()423log 1limlimlim 0log n n n f n n n f n n n n→∞→∞→∞===,因此()43()()f n O f n =;(4) 对1()f n 和3()f n 取对数,有()()() 13log ()log loglog loglog ,log ()2log loglog log f n n n n n n n f n n n n =+=Θ=Ω=+=Θ,因为()log n O n =,所以()31()()f n O f n =;因此,5个函数按渐近增长率由低至高排序为25431(),(),(),(),()f n f n f n f n f n 。
算法设计与分析试卷试题(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 )对输入进行预处理。
(完整版)算法设计与分析考试题及答案,推荐文档
____________________________________。 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
算法设计分析期中试题.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。
算法设计期中试卷、平时作业参考解答
《算法分析与设计》2012-2013-2学期期中测试(信息安全专业DQ 教学班)姓名: 学号: 得分:1. 证明()()()()()()()O f n O g n O f n g n +=+。
(10分)证明:对于任意f 1(n ) ∈ O (f (n )),存在正常数c 1和自然数n 1,使得对所有n ≥ n 1,有f 1(n ) ≤ c 1f (n )成立。
类似,对于任意g 1(n ) ∈ O (g (n )),存在正常数c 2和自然数n 2,使得对所有n ≥ n 2,有g 1(n ) ≤ c 2g (n )成立。
令c 3 = max{c 1, c 2},n 3 = max{n 1, n 2},则对所有的n ≥ n 3,有 f 1(n ) +g 1(n ) ≤ c 1f (n ) + c 2g (n ) ≤ c 3f (n ) + c 3g (n ) = c 3(f (n ) + g (n ))即()()()()()()()O f n O g n O f n g n +=+成立。
2. 将下列5个函数按渐近增长率由低至高进行排序,要求写出比较过程。
(15分)100log 2log loglog 12345()(log ),()log ,()log ,()2,()n n n n f n n n f n n f n n n f n f n +=====解: 100log 2log loglog 24()log 100log ,()2log ,n n n f n n n f n n n +====(1) 2()f n 是对数函数的幂,5()f n 是幂函数,因此()25()()f n O f n =; (2) ()()()491105log limlimlim log n n n f n n n n n f n n →∞→∞→∞===∞,因此()54()()f n O f n =; (3) ()()423log 1limlimlim 0log n n n f n n n f n n n n→∞→∞→∞===,因此()43()()f n O f n =;(4) 对1()f n 和3()f n 取对数,有()()() 13log ()log loglog loglog ,log ()2log loglog log f n n n n n n n f n n n n =+=Θ=Ω=+=Θ,因为()log n O n =,所以()31()()f n O f n =;因此,5个函数按渐近增长率由低至高排序为25431(),(),(),(),()f n f n f n f n f n 。
算法分析与设计试题及答案
算法分析与设计试题及答案一、选择题1. 下列哪个是属于分治算法的例子?A. 冒泡排序B. 归并排序C. 顺序查找D. 选择排序答案:B2. 在排序算法中,时间复杂度最优的是:A. 冒泡排序B. 插入排序C. 归并排序D. 快速排序答案:C3. 哪个不是动态规划的特点?A. 具有重叠子问题B. 通过递归求解C. 需要保存子问题的解D. 具有最优子结构答案:B4. 在图的广度优先搜索算法中,使用的数据结构是:A. 栈B. 队列C. 数组D. 堆栈答案:B5. 在最小生成树算法中,下列哪个不属于贪心策略?A. Kruskal算法B. Prim算法C. Dijkstra算法D. Prim-Kruskal混合算法答案:C二、简答题1. 请简述分治算法的思想和应用场景。
答案:分治算法的思想是将原问题分解成若干个规模较小且类似的子问题,然后解决子问题,最后将子问题的解合并得到原问题的解。
其应用场景包括排序算法(如归并排序、快速排序)、搜索算法(如二分查找)等。
2. 什么是动态规划算法?请给出一个动态规划算法的示例。
答案:动态规划算法是一种通过将问题分解成子问题并解决子问题来解决复杂问题的方法。
它的特点是具有重叠子问题和最优子结构性质。
以斐波那契数列为例,可以使用动态规划算法求解每一项的值,而不需要重复计算。
3. 图的深度优先搜索和广度优先搜索有什么区别?答案:图的深度优先搜索(Depth First Search,DFS)是一种先访问子节点再访问兄弟节点的遍历算法,通常使用递归或者栈实现。
而广度优先搜索(Breadth First Search,BFS)则是以层次遍历的方式展开搜索,使用队列来实现。
DFS更适合用于搜索路径,BFS则适用于寻找最短路径等。
4. 请简述贪心算法的特点及其应用场景。
答案:贪心算法的特点是每一步都采取当前状态下最优的选择,以期望得到全局最优解。
然而,贪心算法并不一定能求解所有问题的最优解,但对于一些特定问题,贪心算法往往能得到近似最优解。
《计算机算法设计与分析》习题及答案
《计算机算法设计与分析》习题及答案一.选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是( A )。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是( C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是( D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是( D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先10.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法12.哈夫曼编码的贪心算法所需的计算时间为( B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)13.分支限界法解最大团问题时,活结点表的组织形式是( B )。
A、最小堆B、最大堆C、栈D、数组14.最长公共子序列算法利用的算法是( B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法15.实现棋盘覆盖算法利用的算法是( A )。
A、分治法B、动态规划法C、贪心法D、回溯法16.下面是贪心算法的基本要素的是( C )。
A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解17.回溯法的效率不依赖于下列哪些因素( D )A.满足显约束的值的个数B. 计算约束函数的时间C.计算限界函数的时间D. 确定解空间的时间18.下面哪种函数是回溯法中为避免无效搜索采取的策略( B )A.递归函数 B.剪枝函数 C。
计算机算法设计与分析试题
四、问答题1.分治法的基本思想时将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。
递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。
2设计动态规划算法的主要步骤为:(1)找出最优解的性质,并刻划其结构特征。
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。
3. 分治法与动态规划法的相同点是:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
两者的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。
而用分治法求解的问题,经分解得到的子问题往往是互相独立的。
4. 分支限界法与回溯法的相同点是:都是一种在问题的解空间树T中搜索问题解的算法。
不同点:(1)求解目标不同;(2)搜索方式不同;(3)对扩展结点的扩展方式不同;(4)存储空间的要求不同。
5用回溯法搜索子集树的算法为: void backtrack (int t) {if (t>n) output(x); elsefor (int i=0;i<=1;i++) { x[t]=i;if (constraint(t)&&bound(t)) backtrack(t+1); } }6. 分治法所能解决的问题一般具有的几个特征是:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)原问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
7. 用分支限界法设计算法的步骤是:(1)针对所给问题,定义问题的解空间(对解进行编码);分 (2)确定易于搜索的解空间结构(按树或图组织解); (3)以广度优先或以最小耗费(最大收益)优先的方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
《算法设计与分析》试卷及答案
《算法设计与分析》试卷1一、多项选择题(每空2分, 共20分):1.以下关于算法设计问题的叙述中正确的是__________。
A.计算机与数值问题的求解——方程式求根、插值问题、数值积分、函数逼近等有关B.利用计算机无法解决非数值问题C.计算机在解决分类、语言翻译、图形识别、解决高等代数和组合分析等方面的数学问题、定理证明、公式推导乃至日常生活中各种过程的模拟等问题中, 主要进行的是判断、比较, 而不是算术运算D、算法设计与分析主要研究对象是非数值问题, 当然也包含某些数值问题2.算法的特征包括_________。
A.有穷性B、确定性C.输入和输出D.能行性或可行性3、以下描述是有关算法设计的基本步骤:①问题的陈述②算法分析③模型的拟制④算法的实现⑤算法的详细设计⑥文档的编制, 应与其它环节交织在一起其中正确的顺序是__________。
A.①②③④⑤⑥B.①③⑤②④⑥C.②④①③⑤⑥D.⑥①③⑤②④4.以下说法正确的是__________。
A.数学归纳法可以证明算法终止性B.良序原则是证明算法的正确性的有力工具C. x = 小于或等于x的最大整数(x的低限)D. x = 小于或等于x的最大整数(x的高限)5、汉诺塔(Hanoi)问题中令h(n)为从A移动n个金片到C上所用的次数, 则递归方程为__________, 其初始条件为__________, 将n个金片从A柱移到C柱上的移动次数是__________;设菲波那契(Fibonacci)数列中Fn为第n个月时兔子的对数, 则有递归方程为__________, 其中F1=F2=__________。
A.Fn=Fn-1+Fn-2 B、h(n)= 2h(n-1)+1C.1 D、h(1)= 1E、h(n)=2n-1F、06.在一个有向连通图中(如下图所示), 找出点A到点B的一条最短路为____ ______。
A.最短路: 1→3→5→8→10, 耗费: 20B、最短路:1→4→6→9→10, 耗费:16C.最短路: 1→4→6→9, 耗费: 12D.最短路: 4→6→9→10, 耗费: 13二、填空(每空2分, 共20分):1.快速排序法的基本思想是重新排列关键字, 把一个文件分成两个文件, 使得第一个文件中所有元素均小于第二个文件中的元素;然后再对两个子文件进行同样的处理。
算法设计与分析期中笔试题(2015)(答案)
…,
rn 是给定正整数,试
给出一个购买许可证的顺序,以使得花费的总钱数最少. 设计一个算法
求解这个问题,说明设计思想,证明其正确性并分析算法最坏情况下的
时间复杂度.
答案
排序 ri 为递减次序,使得 r1 r2 … rn,依次购买. 设最优解为 OPT(I),假设在 OPT(I)存在逆序,即 rj < ri,但是 j 在 i 前面购买. 一定有相邻的逆序, 即存在 i 和 j, 使得 j 在 i 前面与 i
4/8
得分
五、(15 分)在一组服务器S = {������1, ������2, … , ������������}上放置文件副本, 如果 副本放置在������������上, 则产生������������(正的整数值)的存储代价. 当在������������上发生对 该文件的访问时, 如果文件副本在������������上, 则无访问代价; 如果不在������������上,
至多可得到一个软件许可证. 每个许可证当前售价都是 1000 元,但是第
i 个许可证的售价将按照 ri >1 的指数因子增长,i=1,2,…,n. 例如,
第 i 个许可证的售价在 1 个月后将是 ri 1000 元,2 个月后将是 ri21000
元,k
个月后将是
rk i
1000
元.
假设
r1,
r2,
出求解过程.
������(������)
=
4������
������ (2)
+
������2
log ������ ������
������(1) = 1
解答:
������(������) = ������(������2 log������+1������ )
计算机算法设计分析试题及答案
算法设计与分析试卷一、填空题(20分,每空2分)1、算法的性质包括输入、输出、___、有限性。
2、动态规划算法的基本思想就将待求问题_____、先求解子问题,然后从这些子问题的解得到原问题的解。
3、设计动态规划算法的4个步骤:(1)找出____,并刻画其结构特征。
(2)_______。
(3)_______。
(4)根据计算最优值得到的信息,_______。
4、流水作业调度问题的johnson算法:(1)令N1=___,N2={i|ai>=bj};(2)将N1中作业依ai的___。
5、对于流水作业高度问题,必存在一个最优调度π,使得作业π(i)和π(i+1)满足Johnson 不等式_____。
6、最优二叉搜索树即是___的二叉搜索树。
二、综合题(50分)1、当(a1,a2,a3,a4,a5,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为∑ak(2<=k<=4)____(5分)2、由流水作业调度问题的最优子结构性质可知,T(N,0)=______(5分)3、最大子段和问题的简单算法(10分)int maxsum(int n,int *a,int & bestj){intsum=0;for (int i=1;i<=n;i++)for (int j=i;j<=n;j++)int thissum=0;for(int k=i;k<=j;k++)_____;if(thissum>sum){sum=thissum;______;bestj=j;}}return sum;}4、设计最优二叉搜索树问题的动态规划算法OptimalBinarysearchTree? (15分)Void OptimalBinarysearchTree(int a,int n,int * * m, int * * w){for(int i=0;i<=n;i++) {w[i+1][i]=a[i]; m[i+1][i]=____;}for(int r=0;r<n;r++)for(int i=1;i<=n-r;i++){int j=i+r;w[i][j]=w[i][j-1]+a[j]+b[j];m[i][j]=______;s[i][j]=i;for(int k=i+1;k<=j;k++){int t=m[i][k-1]+m[k+1][j];if(_____) {m[i][j]=t; s[i][j]=k;}}m[i][j]=t; s[i][j]=k;}}5、设n=4, (a1,a2,a3,a4)=(3,4,8,10), (b1,b2,b3,b4)=(6,2,9,15) 用两种方法求4个作业的最优调度方案并计算其最优值?(15分)三、简答题(30分)1、将所给定序列a[1:n]分为长度相等的两段a[1:n/2]和a[n/2+1:n],分别求出这两段的最大子段和,则a[1:n]的最大子段和有哪三种情形?(10分)答:2、由0——1背包问题的最优子结构性质,可以对m(i,j)建立怎样的递归式? (10分)3、0——1背包求最优值的步骤分为哪几步?(10分)参考答案:填空题:确定性分解成若干个子问题最优解的性质递归地定义最优值以自底向上的方式计算出最优值构造最优解{i|ai<bi} ai的非减序排序;将N2中作业依bi的非增序排序min{bπ(i),aπ(i+1)}≥min{bπ(i+1),aπ(i)}最小平均查找长度综合题:20 min{ai+T(N-{i},bi)}(1=<i<=n) thissum+=a[k] besti=i 0 m[i+1][j] t<m[i][j]法一:min(ai,bj)<=min(aj,bi)因为min(a1,b2)<=min(a2,b1) 所以1→2 (先1后2) 由min(a1,b3)<=min(a3,b1) 得1→3 (先1后3)同理可得:最后为1→3→4→2法二:johnson算法思想 N1={1,3,4} N2={2} N¹1={1,3,4} N¹2={2} 所以 N¹1→N¹2 得:1→3→4→2简答题:1 、(1)a[1:n]的最大子段和与a[1:n/2]的最大子段和相同。
《计算机算法设计与分析》习题及答案
《计算机算法设计与分析》习题及答案一.选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质??B、构造最优解??C、算出最优解D、定义最优解3、最大效益优先是(?A )的一搜索方式。
A、分支界限法?????B、动态规划法???C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是( A )。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.下列算法中通常以自底向上的方式求解最优解的是(??B? )。
A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是( C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是( D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是(?A )。
A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是(??D? )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先10.下列算法中通常以深度优先方式系统搜索问题解的是(??D? )。
A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法12.哈夫曼编码的贪心算法所需的计算时间为(??B? )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)13.分支限界法解最大团问题时,活结点表的组织形式是(?B? )。
A、最小堆B、最大堆C、栈D、数组14.最长公共子序列算法利用的算法是(??B?)。
A、分支界限法B、动态规划法C、贪心法D、回溯法15.实现棋盘覆盖算法利用的算法是(??A )。
A、分治法B、动态规划法C、贪心法D、回溯法16.下面是贪心算法的基本要素的是(??C? )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉大学计算机学院算法设计与分析 期中测试姓名: 学号:学院: 专业:一、请用大“O(·)”记号求下列函数的渐进表达式:3n 2 + 10n -1; n 2/10 + 2n +1/n; 14 + 5/n + 1/n 2 ; n n +2log ; 20log3n (10分,每小题2分)解答:上述渐进表达式的时间复杂度分别为:3n 2 + 10n -1 =O(n 2); n 2/10 + 2n + 1/n =O(2n ); 14 + 5/n + 1/n 2=O(1);n n +2log =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为根结点的树。
解答:(b)(a)UNION (1,2);UNION (4,3);UNION (5,6);UNION (7,8);(c)UNION (2,6);(d)FIND (1);(e)UNION (3,8);(g)FIND (4);(h)FIND (5);(f)UNION (8,6);三、 设有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<i<=n),请设计贪心算法安排排队次序,使每个人排队等候时间总和最小。
(总分15分)(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 堆的石头合并成一堆的最优值。
则递推方程为:[]][1][]s[]s[]([[]]0)[i k j min f i k f k j j i i j f i j i j ≤<+++-≠⎧⎪=⎨=⎪⎩-----------------------得分3分由于该递推方程递推下去包含有大量重叠子问题,所以不能直接采用递归算法来实现,递归的算法复杂度为: 11221()()(n )1n k n f n f k f k n n -=-⎛⎫=-= ⎪-⎝⎭∑ -----------------------得分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("%d\n",f[1][n]);return 0;}(3)算法复杂度为 (n3)。
-----------------------得分3分(4)输出最优解的程序(和矩阵链相乘一样)Algorithm dd(p){n ← length[p] - 1for i ← 1 to nm[i, i] ← 0end forfor l ← 2 to nfor i ← 1 to n – (l – 1)j ← i + (l – 1)m[i, j] ← ∞for k ← i to j - 1q ← 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] ← kend ifend forend forend forreturn m and s}-----------------------得分2分PRINT-OPTIMAL (s, i, j)1 if i = j2 then print "A"i3 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)假设有如下下图所示的问题实例,1 42 35试采用你设计的算法,把求解最大团的搜索过程详细写出来。
(5分)参考答案:注意,本题会有多种解法,参考答案仅仅是一种,改卷子时一定要看清楚。
(1)假设解向量采用等长的二进制编码(x1,x2,⋯,x n),其中n为图中顶点的个数,回溯算法的递归版本代码如下:Input: An undirected graph G=(V,E).Output: A solution vector x[1,2,…,n].1. for k←1to n2. y[k]=x[k]←-13. end for4. mcl←-15. maxcl(1,0,n)6. output y7. output mclProcedure maxcl (k,r,l)1. x(k) = 02.if k=n then3. if r>mcl then {mcl = r, y=x} endif4.else if r+l >macl then maxcl(k+1,r,l-1)5. endif6. x(k) =17. if节点k与前面取值为1的节点均有边相连then8. if k=n then9. if r>mcl then {mcl = r, y=x} endif10.else maxcl(k+1,r+1,l-1)11. endif7. end if-----------------------得分10分(2)解向量采用等长的二进制编码(x1,x2, ,x n),其中n为图中顶点的个数。
-----------------------得分2分时间复杂度为O(n2n)。
-----------------------得分3分(3)求解过程如下图所示(由于先选取x(k)=0的节点先生成,本实例造成的树太大,所以我们先生成x(k)=1的节点,不管那种做法,答案都算对),其中红色无字方框是不满足要求的中间节点,红色有字方框为被限界的中间节点,红色圆形为不满足要求的解,灰色圆形为满足要求的解。
-----------------------得分5分。