北京大学算法设计方案与分析课期末试题
算法设计与分析期末试卷A卷
算法设计与分析期末试卷A卷一、选择题1.二分搜索算法是利用(A)实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法解析:二分搜索是一种基于分治策略的算法。
2.回溯法解旅行售货员问题时的解空间树是(A)。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树解析:旅行售货员问题的解空间树是子集树,因为每个结点代表一个城市的集合。
3.下列算法中通常以自底向上的方式求解最优解的是(B)。
A、备忘录法B、动态规划法C、贪心法D、回溯法解析:动态规划法通常以自底向上的方式求解最优解。
4.下面不是分支界限法搜索方式的是(D)。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先解析:分支界限法搜索方式包括广度优先、最小耗费优先和最大效益优先,但不包括深度优先。
5.采用贪心算法的最优装载问题的主要计算量在于将集装箱依其重量从小到大排序,故算法的时间复杂度为(B)。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)解析:最优装载问题采用贪心算法的主要计算量在于将集装箱依其重量从小到大排序,因此时间复杂度为O(nlogn)。
6.分支限界法解最大团问题时,活结点表的组织形式是(B)。
A、最小堆B、最大堆C、栈D、数组解析:分支限界法解最大团问题时,活结点表的组织形式是最大堆。
7、下面问题(B)不能使用贪心法解决。
A 单源最短路径问题C 最小花费生成树问题B N皇后问题D 背包问题解析:N皇后问题不能使用贪心法解决。
8.下列算法中不能解决0/1背包问题的是(A)A 贪心法B 动态规划C 回溯法D 分支限界法解析:贪心法不能解决0/1背包问题。
9.背包问题的贪心算法所需的计算时间为(B)A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)解析:背包问题的贪心算法所需的计算时间为O (nlogn)。
二、填空题1.算法的复杂性有时间复杂性和空间复杂性之分。
2.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有穷性四条性质。
算法设计与分析期末考试B卷
大学期末考试试卷B 卷(算法设计与分析)一、选择题(30分,每题2分)1、下面的算法段针对不同的自然数n 作不同的处理,其中函数odd (n) 当n 是奇数时返回true ,否则返回false ,while ( n > 1) if ( odd (n) ) n = 3 * n + 1;else n = n / 2;请问该算法所需计算时间的下界是 。
A .Ω(2n ) B .Ω(nlog n ) C .Ω(n !) D .Ω(logn )2、某体育馆有一羽毛球场出租,现在总共有10位客户申请租用此羽毛球场,每个客户所租用的时间单元如下同一时刻,该羽毛球场只能租借给一位客户,请问在这10位客户里面,体育馆最多能满足 位客户的需求。
P104 A .3 B .4 C .5 D .63、当一个确定性算法在最坏情况下的计算复杂性与其在平均情况下的计算复杂性有较大差别时,可以使用 来消除或减少问题的好坏实例间的这种差别。
A .数值概率算法 B .舍伍德算法 C .拉斯维加斯算法 D .蒙特卡罗算法4、将一个正整数n 表示成一系列正整数之和, n = n 1 + n 2 + … +n k (其中,n 1≥n 2≥ … ≥n k ≥1,k ≥1)正整数n 的一个这种表示称为正整数n 的一个划分。
正整数n 的不同的划分个数总和称为正整数n 的划分数,记作p (n );另外,在正整数n 的所有不同划分中,将最大加数n1不大于m 的划分个数记作q (n ,m )。
则当n=10时,p (n )= 。
A .q (8,8) B .1 + q (9,9) P12 C .2 + q (10,8) D .A ,B ,C 都正确5、对于含有n 个元素的子集树问题,最坏情况下其解空间的叶结点数目为 。
A .n!B .2nC .2n+1-1D .∑=ni i n 1!/! P1406、在棋盘覆盖问题中,对于2k ×2k 的特殊棋盘(有一个特殊方块),所需的L 型骨牌的个数是 A 。
算法设计与分析期末笔试题(2011)
(2)分析算法的正确性(3 分) (3)说明算法的时间复杂度(2 分)。
16 / 16
(c) 剩余顶点构成其补图的一个团
(d) 运行时间为 O(V+E)
4 / 16
得分 三、求解下列递归式,假设 T(1)=1(每小题 5 分,共 15 分)
(1) T(n) 2T(n / 2) n log n
5 / 16
(2) T (n) 2T (n / 2) n / log n
6 / 16
1 / 16
得分
一、填空题(每空 1 分,共 20 分)
1.请将下列 5 个关于 n 的函数 ( 2 )lgn , n2 , lg 2 n, (lg n)!, 2 2lgn 按渐进增
长的关系排序,使得������1 = Ω ������2 , ������2 = Ω ������3 , … , ������4 = Ω ������5 。 ____________、____________、____________、____________和____________。
(3) T(n) nT( n) nlog n
7 / 16
得分 四、简答题(共 20 分)
(1)100 个人排队乘坐有 100 个座位的飞机,正常情况时每个都会对号入坐, 但是,第一个上飞机的是个傻子,他随机坐了一个位子,接下来的人上飞机时,如 果自己座位被人坐了就会随机找个座位坐下,否则就坐自己坐位。问题:最后一个 上飞机的人坐到自己座位的概率是多少?(3 分)
假设有一个字符串������ = ������1������2 … ������������ ,y 的一个“分散子串”是指������ = ������1������2 … ������������ , ������ ≤ ������并且������������ = ������������ ,1 ≤ ������ ≤ ������, 1 ≤ ������1 ≤ ������2 ≤ ⋯ ≤ ������������ ≤ ������。例如,字符串 12345 就 是字符串 1ds2j34muy5dy 一个分散子串。 (1)请设计一个时间复杂度为 O(n)的算法来判断 x 是否是 y 的分散子串。(5 分)
算法设计与分析历年期末试题整理_含答案_
《算法设计与分析》历年期末试题整理(含答案)(1)用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现 7、程序调试 8、结果整理文档编制(2)算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程(3)算法的三要素1、操作2、控制结构3、数据结构算法具有以下5 个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
确定性:算法中每一条指令必须有确切的含义。
不存在二义性。
只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。
输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。
输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。
算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。
一般这两者与问题的规模有关。
经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。
利用迭代算法解决问题,需要做好以下三个方面的工作:一、确定迭代模型。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
北京大学算法设计方案与分析课期末试题
北京大学信息科学技术学院考试试卷考试科目:算法设计与分析姓名: 学号: 考试时间:2009年6月9日任课教师:以下为试卷和答题纸,共 9页。
一、填空题(选做5道,10分>1. 用矩阵幂的方法求斐波那契数,其运行时间为<)。
2.对于一个可以用动态规划法求解的问题,要求问题既要满足<)的特性,又要具有大量的< )。
3.对于一个可以用贪心法求解的问题,不仅要求问题满足<)的特性,还应证明其贪心策略的< )。
4.设有n个栈操作<PUSH、POP、MULTIPOP )的序列,作用于初始为空的栈S。
不区分三种操作,则每个操作的最坏运行时间为<),平摊运行时间为<)。
5.三种平摊分析的方法分别为<)、<)、<)。
6.四后问题的搜索空间为<)树;0-1背包问题的搜索空间为<)树;巡回售货员问题的搜索空间为<)树。
7.<)法的求解目标是找出解空间树中满足约束条件的所有解,而<)法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。
8.回溯法一般以<)优先的方式搜索解空间树,而分支限界法则一般以<)优先或以最小耗费优先的方式搜索解空间树。
二、单项选择题 (10分> Array1.下列关于排序算法的叙述,不正确的是?<)A> 堆排序的最差情形运行时间为Θ(n lg n>B> 快速排序平均情形运行时间为Θ(n lg n>C> 任何排序算法的最差情形运行时间都不可能比Ω(n lg n>更小D> 插入排序在最好情形下的运行时间为Θ(n>2.对于课堂讲解的线性时间内找第i小的元素的算法,<)下列叙述中不正确的是?A> 算法第一步中可以按每五个元素一组找中位数;B> 算法第一步中可以按每七个元素一组找中位数;B> 算法第一步中不能按每三个元素一组找中位数;D> 如果要求的n个元素的中位数,则中位数一定是第一步中找到的中位数中的某一个。
《算法分析与设计》期末试题及参考答案
《算法分析与设计》期末试题及参考答案《算法分析与设计》期末试题及参考答案一、简要回答下列问题:1.算法重要特性是什么?1.确定性、可行性、输入、输出、有穷性2.2.算法分析的目的是什么?2.分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。
3.3.算法的时间复杂性与问题的什么因素相关?3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。
4.算法的渐进时间复杂性的含义?4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。
时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。
5.最坏情况下的时间复杂性和平均时间复杂性有什么不同?5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。
最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max{ T(n,I) } , I∈Dn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n) =∑P(I)T(n,I) I∈Dn6.简述二分检索(折半查找)算法的基本过程。
6. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]<="">7.背包问题的目标函数和贪心算法最优化量度相同吗?7. 不相同。
目标函数:获得最大利润。
最优量度:最大利润/重量比。
8.采用回溯法求解的问题,其解如何表示?有什么规定?8. 问题的解可以表示为n元组:(x1,x2,……x n),x i∈S i, S i为有穷集合,x i∈S i, (x1,x2,……x n)具备完备性,即(x1,x2,……x n)是合理的,则(x1,x2,……x i)(i<n)一定合理。
(完整版)算法设计与分析期末考试卷及答案a
flag=false
_
_
end if
_
__
end for
A[i] A[1]
w =i
return w, A end SPLIT
二.计算题和简答题(每小题
1.用O、、 表示函数f与g之间阶的关系,并分别指出下列函数中阶最低和最高 的函数:
(1)f (n)=100g(n)=100n
(2)f(n)=6n+nlog ng(n)=3n
算法EX1
输入:正整数n,n=2k。输出:⋯
ex1(n)
end EX1过程ex1(n) if n=1 then pro1(n)
else
栏
名姓
级年
_
_系
_院学
pro2(n)
ex1(n/2) end if
return
end ex1
3.用Floyd算法求下图每一对顶点之间的最短路径长度, 计算矩阵D0,D1,D2和D3,其中Dk[i, j]表示从顶点i到顶点j的不经过编号大于
i=find ( (1) )
if i>0 then output i
else output“no solution”
end SEARCH
过程find (low, high)
//求A[low..high]中使得A[i]=i的一个下标并返回,若不存在,
//则返回0。
if (2) then return 0
生专
_
订
马的周游问题:给出一个nxn棋盘,已知一个中国象棋马在
_
_
棋盘上的某个起点位置(x0, y0),求一条访问每个棋盘格点恰好
_
_
一次,最后回到起点的周游路线。 (设马走日字。)
《算法分析与设计》期末考试复习题-学生版
《算法分析与设计》期末复习题一、选择题1。
应用Johnson 法则的流水作业调度采用的算法是(D )A. 贪心算法 B 。
分支限界法 C.分治法 D 。
动态规划算法2。
Hanoi 塔问题如下图所示。
现要求将塔座A 上的的所有圆盘移到塔座B 上,并仍按同样顺序叠置.移动圆盘时遵守Hanoi 塔问题的移动规则。
由此设计出解Hanoi 塔问题的递归算法正确的为:(B )Hanoi 塔A. void hanoi(int n, int A, int C, int B) { if (n > 0) {hanoi(n-1,A,C, B); move(n,a,b);hanoi(n-1, C, B, A); } B. void hanoi(int n, int A, int B, int C) {if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A); }C. void hanoi(int n, int C, int B, int A) {if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A); }3。
动态规划算法的基本要素为(C)A。
最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用4。
算法分析中,记号O表示(B),记号Ω表示(A),记号Θ表示(D)。
A.渐进下界B。
渐进上界C.非紧上界D.紧渐进界E。
非紧下界5. 以下关于渐进记号的性质是正确的有:(A)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))=⇔=6。
《算法分析与设计》期末试题及参考答案
《算法分析与设计》期末试题及参考答案一、简要回答下列问题:1.算法重要特性是什么?1. 确定性、可行性、输入、输出、有穷性2.2.算法分析的目的是什么?2. 分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。
3.3.算法的时间复杂性与问题的什么因素相关?3. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。
4.算法的渐进时间复杂性的含义?4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。
时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。
5.最坏情况下的时间复杂性和平均时间复杂性有什么不同?5. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。
最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max{ T(n,I) } , I∈Dn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n) =∑P(I)T(n,I) I∈Dn6.简述二分检索(折半查找)算法的基本过程。
6. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]<x,则A[i:(i+j)/2-1]找x,否则在A[ (i+j)/2+1:j] 找x。
上述过程被反复递归调用。
7.背包问题的目标函数和贪心算法最优化量度相同吗?7. 不相同。
目标函数:获得最大利润。
最优量度:最大利润/重量比。
8.采用回溯法求解的问题,其解如何表示?有什么规定?8. 问题的解可以表示为n元组:(x1,x2,……x n),x i∈S i, S i为有穷集合,x i∈S i, (x1,x2,……x n)具备完备性,即(x1,x2,……x n)是合理的,则(x1,x2,……x i)(i<n)一定合理。
《算法设计与分析》考试题目及答案(2)
《算法设计与分析》考试题⽬及答案(2)《算法分析与设计》期末复习题⼀、选择题1.应⽤Johnson 法则的流⽔作业调度采⽤的算法是(D ) A. 贪⼼算法 B. 分⽀限界法 C.分治法 D. 动态规划算法塔问题如下图所⽰。
现要求将塔座A 上的的所有圆盘移到塔座B 上,并仍按同样顺序叠置。
移动圆盘时遵守Hanoi 塔问题的移动规则。
由此设计出解Hanoi 塔问题的递归算法正确的为:(B )HanoiA. void hanoi(int n, int A, int C, int B) {if (n > 0) { hanoi(n-1,A,C, B); move(n,a,b);hanoi(n-1, C, B, A); B. void hanoi(int n, int A, int B, int C) {if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A);C. void hanoi(int n, int C, int B, int A) {if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A);3. 动态规划算法的基本要素为(C ) A. 最优⼦结构性质与贪⼼选择性质 B .重叠⼦问题性质与贪⼼选择性质 C .最优⼦结构性质与重叠⼦问题性质 D. 预排序与递归调⽤4. 算法分析中,记号O 表⽰(B ),记号Ω表⽰(A ),记号Θ表⽰(D )。
A.渐进下界 B.渐进上界 C.⾮紧上界 D.紧渐进界E.⾮紧下界5. 以下关于渐进记号的性质是正确的有:(A ) 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))=?=6. 能采⽤贪⼼算法求最优解的问题,⼀般具有的重要性质为:(A )A. 最优⼦结构性质与贪⼼选择性质 B .重叠⼦问题性质与贪⼼选择性质D. void hanoi(int n, int C, int A, int B){if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A);C .最优⼦结构性质与重叠⼦问题性质 D. 预排序与递归调⽤7. 回溯法在问题的解空间树中,按(D )策略,从根结点出发搜索解空间树。
北京大学算法设计与分析2016算分期末考试题
2016年算法设计与分析(回忆版)(貌似有8题只记得7题了,反正重点是后面几题,我应该是忘了一道很简单的。
)
1.判断题
2.读代码,计算比较次数
3.(贪心法)用交换逆序对就可以证明
4.线性规划建模(只用建模,不用解)
5.证明NPC:判定问题,任意一个图G,判定是否存在一个顶点数小于a的顶点集,是两
端点都在该顶点集的边的数量不超过b。
(已知SAT、VC、HC、有向HC、顶点覆盖、团问题是NPC的)
6.设计算法求源点s到图中任意其他点的最短路径,且该路径所经过的边数不超过k。
7.防空避难,G<V, E>为图,其中{ X }是居住点集,{ S }是防空洞点集,{ D }为避难路线集,
每一条路线从X中的点出发到S中的点终止。
a)设计算法判断能否找到这样一个避难路线集使:
i.每条边最多只能被一条路线覆盖
ii.每个居民点至少要有一条路线
b)添加条件:图中每个节点最多只能有一个撤退路线经过
c)给出一个例子使第一问回答YES而第二问回答NO。
《算法设计与分析》期末复习题
填空1.直接或间接地调用自身的算法称为 递归算法 。
2.算法的复杂性是 算法效率 的度量,是评价算法优劣的重要依据。
3.以广度优先或以最小耗费方式搜索问题解的算法称为 分支限界法 。
4.回溯法解题的显著特点是在搜索过程中动态产生问题的解空间。
在任何时刻,算法只保存从根结点到当前扩展结点的路径。
如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为 O (h(n)) 。
5.人们通常将问题的解决方案分为两大类:一类是可以通过执行若干个步骤就能得出问题结论的,叫做 算法 方案;另一类是不能通过若干个步骤直截了当地得出结论,而是需要反复验证才能解决的,叫做 启发式 方案。
6.算法就是一组有穷的 规则 ,它们规定了解决某一特定类型问题的 一系列运算 。
7.在进行问题的计算复杂性分析之前,首先必须建立求解问题所用的计算模型。
3个基本计算模型是 随机存取机RAM 、 随机存取存储程序机RASP 、 图灵机 。
8.快速排序算法的性能取决于 划分的对称性 。
9.计算机的资源最重要的是 时间资源 和 空间 资源。
因而, 算法的复杂性有 时间复杂度 和 空间复杂度 之分。
10.贪心算法总是做出在当前看来 最优 的选择。
也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的 局部最优 。
11.许多可以用贪心算法求解的问题一般具有2个重要的性质: 贪心选择 性质和 最优子结构 性质。
12.常见的两种分支限界法为 队列式(FIFO )分支限界 和 优先队列式分支限界 。
13.解决0/1背包问题可以使用动态规划、回溯法和分支限界法,其中需要排序的是 回溯法、分支限界法 ,不需要排序的是 动态规划 。
14.f ( n ) = 6 × 2n + n 2,f(n)的渐进性态f ( n ) = O ( 2n )。
15.对于含有n 个元素的排列树问题,最好情况下计算时间复杂性为 ,最坏情况下计算时间复杂性为 n! 。
《算法分析与设计》期末考试复习题纲(完整版)
《算法分析与设计》期末复习题一、选择题1.算法必须具备输入、输出和( D )等4个特性。
A.可行性和安全性 B.确定性和易读性C.有穷性和安全性 D.有穷性和确定性2.算法分析中,记号O表示( B ),记号Ω表示( A )A.渐进下界B.渐进上界C.非紧上界D.紧渐进界3.假设某算法在输入规模为n时的计算时间为T(n)=3*2^n。
在某台计算机上实现并完成概算法的时间为t秒。
现有另一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能解输入规模为多大的问题?( B )解题方法:3*2^n*64=3*2^xA.n+8 B.n+6C.n+7 D.n+54.设问题规模为N时,某递归算法的时间复杂度记为T(N),已知T(1)=1,T(N)=2T(N/2)+N/2,用O表示的时间复杂度为( C )。
A.O(logN) B.O(N)C.O(NlogN) D.O(N²logN)5.直接或间接调用自身的算法称为( B )。
A.贪心算法 B.递归算法C.迭代算法 D.回溯法6.Fibonacci数列中,第4个和第11个数分别是( D )。
A.5,89 B.3,89C.5,144 D.3,1447.在有8个顶点的凸多边形的三角剖分中,恰有( B )。
A.6条弦和7个三角形 B.5条弦和6个三角形C.6条弦和6个三角形 D.5条弦和5个三角形8.一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。
A.重叠子问题 B.最优子结构性质C.贪心选择性质 D.定义最优解9.下列哪个问题不用贪心法求解( C )。
A.哈夫曼编码问题 B.单源最短路径问题C.最大团问题 D.最小生成树问题10.下列算法中通常以自底向上的方式求解最优解的是( B )。
A.备忘录法 B.动态规划法C.贪心法 D.回溯法11.下列算法中不能解决0/1背包问题的是( A )。
A.贪心法 B.动态规划C.回溯法 D.分支限界法12.下列哪个问题可以用贪心算法求解( D )。
《算法分析与设计》期末考试复习题
《算法分析与设计》期末考试复习题《算法分析与设计》期末复习题贪⼼法的当前选择可能要依赖已经作出的所有选择,但不依赖于有待于做出的选择和⼦问题。
因此贪⼼法⾃顶向下,⼀步⼀步地作出贪⼼选择;⽽分治法中的各个⼦问题是独⽴的(即不包含公共的⼦问题),因此⼀旦递归地求出各⼦问题的解后,便可⾃下⽽上地将⼦问题的解合并成问题的解。
不⾜之处:如果当前选择可能要依赖⼦问题的解时,则难以通过局部的贪⼼策略达到全局最优解;如果各⼦问题是不独⽴的,则分治法要做许多不必要的⼯作,重复地解公共的⼦问题。
解决上述问题的办法是利⽤动态规划。
该⽅法主要应⽤于最优化问题,这类问题会有多种可能的解,每个解都有⼀个值,⽽动态规划找出其中最优(最⼤或最⼩)值的解。
若存在若⼲个取最优值的解的话,它只取其中的⼀个。
在求解过程中,该⽅法也是通过求解局部⼦问题的解达到全局最优解,但与分治法和贪⼼法不同的是,动态规划允许这些⼦问题不独⽴,(亦即各⼦问题可包含公共的⼦问题)也允许其通过⾃⾝⼦问题的解作出选择,该⽅法对每⼀个⼦问题只解⼀次,并将结果保存起来,避免每次碰到时都要重复计算。
因此,动态规划法所针对的问题有⼀个显著的特征,即它所对应的⼦问题树中的⼦问题呈现⼤量的重复。
动态规划法的关键就在于,对于重复出现的⼦问题,只在第⼀次遇到时加以求解,并把答案保存起来,让以后再遇到时直接引⽤,不必重新求解。
⼀、选择题1.应⽤Johnson 法则的流⽔作业调度采⽤的算法是(D )A. 贪⼼算法B. 分⽀限界法C.分治法D. 动态规划算法2.Hanoi 塔问题如下图所⽰。
现要求将塔座A 上的的所有圆盘移到塔座B 上,并仍按同样顺序叠置。
移动圆盘时遵守Hanoi 塔问题的移动规则。
由此设计出解Hanoi 塔问题的递归算法正确的为:(B )Hanoi 塔A. void hanoi(int n, int A, int C, int B) { if (n > 0) {hanoi(n-1,A,C, B); move(n,a,b);hanoi(n-1, C, B, A); } }B. void hanoi(int n, int A, int B, int C) {if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A); } }C. void hanoi(int n, int C, int B, int A){if (n > 0) {hanoi(n-1, A, C, B);move(n,a,b);hanoi(n-1, C, B, A);}D. void hanoi(int n, int C, int A, int B){ if (n > 0){ hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A);}}3. 动态规划算法的基本要素为(C)A. 最优⼦结构性质与贪⼼选择性质B.重叠⼦问题性质与贪⼼选择性质C.最优⼦结构性质与重叠⼦问题性质D. 预排序与递归调⽤4. 算法分析中,记号O表⽰(B),记号Ω表⽰(A),记号Θ表⽰(D)。
(完整)算法设计与分析期末试题_考试版
1、用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现7、程序调试8、结果整理文档编制2、算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程3、算法的三要素1、操作2、控制结构3、数据结构算法具有以下5个属性:有穷性:确定性:可行性:输入:输出:算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。
效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。
一般这两者与问题的规模有关。
复杂性的渐近性态设T(N)是算法A的复杂性函数,使得当N→∞时有:(T(N)-T’(N))/T(N)→ 0那么,我们就说T’(N)是T(N)当N→∞时的渐近性态,或叫T’(N)为算法A 当N→∞的渐近复杂性而与T(N)相区别.P = NP经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法分而治之法1、基本思想将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之.分治法所能解决的问题一般具有以下几个特征:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;(3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。
3、分治法的基本步骤(1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;(2)解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;(3)合并:将各个子问题的解合并为原问题的解。
递归:直接或间接的调用自身的算法,叫做递归算法.1·期盘覆盖用分治策略,可以设计解棋盘问题的一个简捷的算法。
算法分析期末考试集答案(套)
算法分析期末考试集答案(套)《算法分析与设计》⼀、解答题 1. 机器调度问题。
问题描述:现在有n 件任务和⽆限多台的机器,任务可以在机器上得到处理。
每件任务的开始时间为s i ,完成时间为f i ,s i问题实例:若任务占⽤的时间范围是{[1,4],[2,5],[4,5],[2,6],[4,7]},则按时完成所有任务最少需要⼏台机器?(提⽰:使⽤贪⼼算法)画出⼯作在对应的机器上的分配情况。
2. 已知⾮齐次递归⽅程:f (n)bf (n 1)g(n)f (0)c =-+??=? ,其中,b 、c 是常数,g(n)是n 的某⼀个函数。
则f(n)的⾮递归表达式为:nnn i i 1f (n)cb b g(i)-==+∑。
现有Hanoi 塔问题的递归⽅程为:h(n)2h(n 1)1h(1)1=-+??=? ,求h(n)的⾮递归表达式。
解:利⽤给出的关系式,此时有:b=2, c=1, g(n)=1, 从n 递推到1,有:n 1n 1n 1i i 1n 1n 22n h(n)cbb g(i)22 (22121)----=--=+=+++++=-∑3. 单源最短路径的求解。
问题的描述:给定带权有向图(如下图所⽰)G =(V,E),其中每条边的权是⾮负实数。
另外,还给定V 中的⼀个顶点,称为源。
现在要计算从源到所有其它各顶点的最短路长度。
这⾥路的长度是指路上各边权之和。
这个问题通常称为单源最短路径问题。
解法:现采⽤Dijkstra 算法计算从源顶点1到其它顶点间最短路径。
请将此过程填⼊下表中。
4. 请写出⽤回溯法解装载问题的函数。
装载问题:有⼀批共n 个集装箱要装上2艘载重量分别为c1和c2的轮船,其中集装箱i 的重量为wi ,且121nii w c c=≤+∑。
装载问题要求确定是否有⼀个合理的装载⽅案可将这n 个集装箱装上这2艘轮船。
如果有,找出⼀种装载⽅案。
解:void backtrack (int i){// 搜索第i 层结点if (i > n) // 到达叶结点更新最优解bestx,bestw;return; r -= w[i];if (cw + w[i] <= c) {// 搜索左⼦树43 2 1 100 30 maxint10 - {1} 初始 dist[5] dist[4] dist[3] dist[2] u S 迭代x[i] = 1;cw += w[i];backtrack(i + 1);cw -= w[i]; }if (cw + r > bestw) {x[i] = 0; // 搜索右⼦树backtrack(i + 1); }r += w[i];}5. ⽤分⽀限界法解装载问题时,对算法进⾏了⼀些改进,下⾯的程序段给出了改进部分;试说明斜线部分完成什么功能,以及这样做的原因,即采⽤这样的⽅式,算法在执⾏上有什么不同。
《算法设计与分析》考试题目及答案(DOC)
构。 10.用回溯法解 0/1 背包问题时,计算结点的上界的函数如下所示,请在空
格中填入合适的内容:
Typep Knap<Typew, Typep>::Bound(int i) {// 计算上界
return true; }
13. 旅行售货员问题的解空间树是(排列树)。
三、 证明题
1. 一个分治法将规模为 n 的问题分成 k 个规模为 n/m 的子问题去解。设分
解阀值 n0=1,且 adhoc 解规模为 1 的问题耗费 1 个单位时间。再设将原问
题分解为 k 个子问题以及用 merge 将 k 个子问题的解合并为原问题的解需用
12. 用回溯法解图} 的 m 着色问题时,使用下面的函数 OK 检查当前扩展结点的
每一个儿子所相应的颜色的可用性,则需耗时(渐进时间上限)(O(mn))。
Bool Color::OK(int k) {//
for(int j=1;j<=n;j++) if((a[k][j]= =1)&&(x[j]= =x[k])) return false;
Typew cleft = c - cw; // 剩余容量
Typep b = cp;
// 结点的上界
// 以物品单位重量价值递减序装入物品
while (i <= n && w[i] <= cleft) {
cleft -= w[i];
b += p[i];
i++;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京大学信息科学技术学院考试试卷
考试科目:算法设计与分析姓名: 学号: 考试时间:2009年6月9日任课教师:
以下为试卷和答题纸,共 9页。
一、填空题(选做5道,10分>
1.用矩阵幂的方法求斐波那契数,其运行时间为<)。
2.对于一个可以用动态规划法求解的问题,要求问题既要满足<)的特性,又要具有大量的< )。
3.对于一个可以用贪心法求解的问题,不仅要求问题满足<)的特性,还应证明其贪心策略的< )。
4.设有n个栈操作<PUSH、POP、MULTIPOP )的序列,作用于初始为空的栈S。
不区分三种操作,则每个操作的最
坏运行时间为<),平摊运行时间为<)。
5.三种平摊分析的方法分别为<)、<)、<)。
6.四后问题的搜索空间为<)树;0-1背包问题的搜索空间为<)树;巡回售货员问题的搜索空间为<)树。
7.<)法的求解目标是找出解空间树中满足约束条件的所有解,而<)法的求解目标则是找出满足约束条件的一个
解,或是在满足约束条件的解中找出在某种意义下的最优解。
8.回溯法一般以<)优先的方式搜索解空间树,而分支限界法则一般以<)优先或以最小耗费优先的方式搜索解空
间树。
二、单项选择题 (10分> Array 1.下列关于排序算法的叙述,不正确的是?<)
A> 堆排序的最差情形运行时间为Θ(nlgn>B> 快速排
序平均情形运行时间为Θ(nlgn>
C> 任何排序算法的最差情形运行时间都不可能比
Ω(nlgn>更小D> 插入排序在最好情形下的运行时间为
Θ(n>
2.对于课堂讲解的线性时间内找第i小的元素的算法,<)下列叙述中不正确的是?
A> 算法第一步中可以按每五个元素一组找中位数;B>
算法第一步中可以按每七个元素一组找中位数;B> 算
法第一步中不能按每三个元素一组找中位数;D> 如果
要求的n个元素的中位数,则中位数一定是第一步中找
到的中位数中的某一个。
3.主方法可以求解满足形如下式的递推方程,<)
则下列关于方程中的约束中不准确的是?A> 对于系数a,必须满足a≥ 1B> 对于系数b,必须满足 b > 1C> 若对于常数ε>0,f(n>=O(nlogba-ε>,则T(n>=Θ(nlogba>
D> 若f(n>=O(nlogba> ,则T(n>=Θ(nlogbalogn> 4.下列哪些问题不能用贪心法求解?<)
A> 霍夫曼编码问题B> 单源最短路径问题
C> 0-1背包问题D> 最小生成树问题
5.可合并堆上可以不包含下列哪个操作?<)
A> DECREASE-KEY(H, x, k> B> UNION(H1, H2>
C> INSERT(H, x> D> EXTRACT-MIN(H>
6.不同堆上插入操作最差情形下的开销或平摊开销,<)对二叉堆、二项堆和斐波那契堆,下列选项中描述错误的是?
A> 二叉堆为Θ(lg n> B> 二项堆为O(lg n>
C> 斐波那契堆为Θ(1> D> 三种堆的开销都是Θ(lg
n>
7.关于网络流的割,下列选项中错误的是?<)
割(S,T>是流网络G=(V,E>的一个划分,其中s∈S, t∈T。
如果 f 是G上的流,那么流经割的净流量为f(S,T>,割(S,T>上的容量定义为c(S,T> 。
A> | f | ≤ c(S, T>B> f(S, T> = | f |
C> f(s, V-s> = | f | D> f(S-s, V> = | f |
8.下列随机算法一定有解但解不一定正确的是?<)
A> SherwoodB> LasVegas C> MonteCarloD> 三者都
不是
9.在快速排序算法中引入随机过程的主要目的是什么?<)
A> 改善确定性算法的平均运行时间
B> 保证算法总能在O(nlgn>时间内结束
C> 避免了算法最坏情况下的发生
D> 改善了确定性算法最坏情形下的平均运行时间
10.用Monte Carlo方法估计四后问题回溯算法的效率。
<)五次实验结果分别为<1,4,2>、<2,4,1,3>、<4,2>、<3,1,4,2>、<1,3>,则解空间中的结点数估计为?
A> 16 B> 16.2 C> 17 D> 16.5
三、社会名流(20分> Array在n个人中,一个被所有人知道但却不知道别人的人,被定义为社会名流。
现在的问题是如果存在,试找出该社会名流。
你可以使用的唯一方式是询问:“请问你知道那个人吗?”请给出提问次数为O(n>的算法,写出伪代码,分析算法的正确性,并给出算法运行时间的精确分析<即O(n>中隐藏的系数)。
<提示:当你问A是否认识B时,如果A认识B,则A不
是社会名流;如果A不认识B,则B不是社会名流)
四、地板覆盖<20分)
算法的正确性,并说明算法运行时间的上界和下界。
int fn(int n> {
if (n % 2 == 1> return 0。
int [] f = new int[n+1]。
f[0] = 1。
for (int i = 2。
i <= n。
i += 2> {
f[i] = f[i-2]*3。
for (int j = i-4。
j >= 0。
j -= 2>
f[i] += f[j]*2。
}
return f[n]。
}
五、田忌赛马<20分)
王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺
序选择他的赛马出赛。
赢一局,田忌可以得到200两银子,
输一局,田忌就要输掉200两银子。
已知国王和田忌的所有
马的奔跑速度,并且所有马奔跑的速度均不相同,现已经对
两人的马分别从快到慢排好序,请设计一个算法,帮助田忌
赢得最多的银子。
写出伪代码,证明算法的正确性,并分析
算法的复杂度。
<提示:可以设计一个贪心策略的算法,面对国王每匹顺
序出场的马,如果田忌的马快,就派最快的出场;否则派最
慢的马出场)
六、<20分)给出n项作业,对应每项作业有一个运
行时间,在m个处理器上调度这些作业,使完成的时间最小。
完成的时间定义为在所有的处理器中运行时间最长的处
理器运行的时间。
采用如下的近似算法:即,按照原始给定
的作业顺序:,把每一项作业分配给当前情况下最近
可用的那个处理器,使该作业尽可能早被处理<其它没有任何约束)
1.试证明该算法的近似度为。
<10分)
2.构造边界情况,说明这个界是紧的。
<10分)
<提示:)。