算法分析与设计期末考试模拟试题一

合集下载

大学算法设计与分析课期末试题

大学算法设计与分析课期末试题

一、填空题(选做5道,10分)1. 用矩阵幂的方法求斐波那契数,其运行时间为().2. 对于一个可以用动态规划法求解的问题,要求问题既要满足()的特性,又要具有大量的( ).3. 对于一个可以用贪心法求解的问题,不仅要求问题满足()的特性,还应证明其贪心策略的( ).4. 设有n 个栈操作(PUSH 、POP 、MULTIPOP )的序列,作用于初始为空的栈S .不区分三种操作,则每个操作的最坏运行时间为(),平摊运行时间为(). 5. 三种平摊分析的方法分别为()、()、().6. 四后问题的搜索空间为()树;0-1背包问题的搜索空间为()树;巡回售货员问题的搜索空间为()树.7. ()法的求解目标是找出解空间树中满足约束条件的所有解,而()法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解. 8. 回溯法一般以()优先的方式搜索解空间树,而分支限界法则一般以()优先或以最小耗费优先的方式搜索解空间树. 二、单项选择题 (10分)1. 下列关于排序算法的叙述,不正确的是?()A) 堆排序的最差情形运行时间为Θ(n lg n )B) 快速排序平均情形运行时间为Θ(n lg n ) C) 任何排序算法的最差情形运行时间都不可能比Ω(n lg n )更小D) 插入排序在最好情形下的运行时间为Θ(n )2. 对于课堂讲解的线性时间内找第i 小的元素的算法,()下列叙述中不正确的是?A) 算法第一步中可以按每五个元素一组找中位数;B) 算法第一步中可以按每七个元素一组找中位数;B) 算法第一步中不能按每三个元素一组找中位数;D) 如果要求的n 个元素的中位数,则中位数一定是第一步中找到的中位数中的某一个.3. 主方法可以求解满足形如下式的递推方程,()则下列关于方程中的约束中不准确的是?A) 对于系数a ,装订线内不要必须满足a≥ 1B) 对于系数b,必须满足b > 1C) 若对于常数ε>0,f(n)=O(n log b a-ε),则T(n)=Θ(n log b a)D) 若f(n)=O(n log b a),则T(n)=Θ(n log b a log n)4.下列哪些问题不能用贪心法求解?()A) 霍夫曼编码问题B) 单源最短路径问题C) 0-1背包问题D) 最小生成树问题可合并堆上可以不包含下列哪个操作?()A) DECREASE-KEY(H, x, k) B) UNION(H1, H2)C) INSERT(H, x) D) EXTRACT-MIN(H)5.不同堆上插入操作最差情形下的开销或平摊开销,()对二叉堆、二项堆和斐波那契堆,下列选项中描述错误的是?A) 二叉堆为Θ(lg n) B) 二项堆为O(lg n)C) 斐波那契堆为Θ(1)D) 三种堆的开销都是Θ(lg n)6.关于网络流的割,下列选项中错误的是?()割(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 |7.下列随机算法一定有解但解不一定正确的是?()A) SherwoodB) LasVegas C) MonteCarloD) 三者都不是8.在快速排序算法中引入随机过程的主要目的是什么?()A) 改善确定性算法的平均运行时间B) 保证算法总能在O(n lg n)时间内结束C) 避免了算法最坏情况下的发生D) 改善了确定性算法最坏情形下的平均运行时间9.用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分)用2*1的地板块覆盖3*n 的地面有多少种方案?如下图是一个覆盖的例子,函数fn 可用于求解这个问题,请说明fn 算法的正确性,并说明算法运行时间的上界和下界.int fn(int n) { if (n % 2 == 1) return 0。

算法设计与分析期末试卷A卷

算法设计与分析期末试卷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.算法是由若干条指令组成的有穷序列,且要满足输入、输出、确定性和有穷性四条性质。

《算法分析与设计》期末考试复习题纲(完整版)

《算法分析与设计》期末考试复习题纲(完整版)

《算法分析与设计》期末复习题一、选择题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 )。

《算法设计与分析》考试题目及答案(DOC)

《算法设计与分析》考试题目及答案(DOC)
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.重叠子问题性质与贪心选择性质
3. 所谓贪心选择性质是指(所求问题的整体最优解可以通过一系列局部最 优的选择,即贪心选择来达到)。
4. 所谓最优子结构性质是指(问题的最优解包含了其子问题的最优解)。 5. 回溯法是指(具有限界函数的深度优先生成法)。 6. 用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。在任 何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树 中 从根结点到叶结点的最长路径的长度为 h(n),则回溯法所需的计算空间通 常为(O(h(n)))。 7. 回溯法的算法框架按照问题的解空间一般分为(子集树)算法框架与
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;
f(n)个单位时间。用 T(n)表示该分治法解规模为|P|=n 的问题所需的计算时
间,则有:T (n)

kT (n
O(1) / m)
f
(n)
n 1 n 1

算法设计与分析期末试题_考试版

算法设计与分析期末试题_考试版

1、用计算机求解问题的步骤:1、问题分析2、数学模型建立3、算法设计与选择4、算法指标5、算法分析6、算法实现7、程序调试8、结果整理文档编制2、算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程3、算法的三要素1、操作2、控制结构3、数据结构算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

确定性:算法中每一条指令必须有确切的含义。

不存在二义性。

只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。

输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。

输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。

算法设计的质量指标:正确性:算法应满足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。

效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。

一般这两者与问题的规模有关。

经常采用的算法主要有迭代法、分而治之法、贪婪法、动态规划法、回溯法、分支限界法迭代法基本思想:迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。

解题步骤:1、确定迭代模型。

根据问题描述,分析得出前一个(或几个)值与其下一个值的迭代关系数学模型。

2、建立迭代关系式。

迭代关系式就是一个直接或间接地不断由旧值递推出新值的表达式,存储新值的变量称为迭代变量3、对迭代过程进行控制。

确定在什么时候结束迭代过程,这是编写迭代程序必须考虑的问题。

不能让迭代过程无休止地重复执行下去。

迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。

对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。

算法分析与设计_山东财经大学中国大学mooc课后章节答案期末考试题库2023年

算法分析与设计_山东财经大学中国大学mooc课后章节答案期末考试题库2023年

算法分析与设计_山东财经大学中国大学mooc课后章节答案期末考试题库2023年1.蒙特卡罗算法的结果未必正确,并且可能难以有效判定是否正确。

答案:正确2.T(n) = T(n-1) + 1, T(1)=1,则 T(n) =Q(___)答案:n3.木板问题:农夫约翰为了修理栅栏,将一块木板切割成N块,N块的长度和=原木板长度。

每次切割木板时的开销为该木板的长度。

木板长15,切成长为1、 2 、3 、 4 、5的木板。

如何切割,使开销最小? (1) 该问题最好使用()算法求解。

A 枚举B 贪心C 分治D 递推(2)第一次切割成长度为_____和_____的两块。

(3) 切割的策略和_____算法相同。

A MSTB 区间调度C 哈夫曼D 区间划分答案:B;6;9;C4.背包问题,背包容量C=20 ,物品价值p =[4, 8,15, 1, 6,3], 物品重量w=[5, 3,2, 10, 4, 8],如果是0-1背包问题,求装入背包的最大价值和相应装入物品。

(1)该问题最好使用()算法求解?A 动态规划算法B 贪心算法C 枚举算法D 分治算法(2)装入背包的最大价值是_____,(3)最大价值对应的物品编号为____、____、____、____。

(从小到大)答案:A;33;1;2;3;55.动态规划方程M[i]=min(M[j]+wij), 1≤i≤j≤n, 则算法的时间复杂度为n^2答案:正确6.给定二分图G = 中无孤立点,|V|=n,其最大流算法求得最大流f, 则 G的最大独立数=n-f答案:正确7.旅行商问题的所有解,可以组织成一棵树,包含了所有城市的排列组合。

树的根结点到任一叶结点的路径,定义了图的一条周游路线。

答案:正确8.对于问题的一个实例,解向量满足显式约束条件的所有多元组,构成了该实例的一个解空间。

答案:正确9.Floyd算法是动态规划算法,稠密图效果最佳,边权可正可负。

答案:正确10.f=o(g)当且仅当g = ω (f)答案:正确11.预流推进算法的关键操作有()答案:重标号_初始化_推进12.最小费用最大流算法求得解需满足()条件。

1算法设计与分析课程期末试卷A卷(含答案)

1算法设计与分析课程期末试卷A卷(含答案)

1算法设计与分析课程期末试卷A卷(含答案)华南农业大学期末考试试卷(A卷)2008学年第一学期考试科目:算法分析与设计考试类型:(闭卷)考试时间:120分钟学号姓名年级专业一、选择题(20分,每题2分)1.下述表达不正确的是。

DA.n2/2 + 2n的渐进表达式上界函数是O(2n)B.n2/2 + 2n的渐进表达式下界函数是Ω(2n)C.logn3的渐进表达式上界函数是O(logn)D.logn3的渐进表达式下界函数是Ω(n3)2.当输入规模为n时,算法增长率最大的是。

AA.5n B.20log2n C.2n2D.3nlog3n3.T(n)表示当输入规模为n时的算法效率,以下算法效率最优的是。

C A.T(n)= T(n – 1)+1,T(1)=1 B.T(n)= 2n2 C.T(n)= T(n/2)+1,T(1)=1 D.T(n)= 3nlog2n4.在棋盘覆盖问题中,对于2k×2k的特殊棋盘(有一个特殊方块),所需的L型骨牌的个数是。

AA.(4k– 1)/3 B.2k /3 C.4k D.2k5.在寻找n个元素中第k小元素问题中,若使用快速排序算法思想,运用分治算法对n个元素进行划分,应如何选择划分基准?下面答案解释最合理。

D A.随机选择一个元素作为划分基准B.取子序列的第一个元素作为划分基准C.用中位数的中位数方法寻找划分基准D.以上皆可行。

但不同方法,算法复杂度上界可能不同6.现在要盖一所邮局为这9个村庄服务,请问邮局应该盖在才能使到邮局到这9个村庄的总距离和最短。

CA.(4.5,0)B.(4.5,4.5)C.(5,5)D.(5,0)7.n个人拎着水桶在一个水龙头前面排队打水,水桶有大有小,水桶必须打满水,水流恒定。

如下说法不正确?AA.让水桶大的人先打水,可以使得每个人排队时间之和最小B.让水桶小的人先打水,可以使得每个人排队时间之和最小C.让水桶小的人先打水,在某个确定的时间t内,可以让尽可能多的人打上水D.若要在尽可能短的时间内,n个人都打完水,按照什么顺序其实都一样8.分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。

《算法分析与设计》期末试题及参考答案

《算法分析与设计》期末试题及参考答案

《算法分析与设计》期末试题及参考答案一、简要回答下列问题: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)一定合理。

算法设计与分析期末试题考试版

算法设计与分析期末试题考试版

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)合并:将各个子问题的解合并为原问题的解。

递归:直接或间接的调用自身的算法,叫做递归算法。

(完整版)算法设计与分析期末考试卷及答案a

(完整版)算法设计与分析期末考试卷及答案a

考生 信 息 栏 ______学院______系______专业______年级姓名______学号_____ 装 订 线考 生信 息 栏 ______学院______系______专业______年级姓名______学号_____ 装 订 线 pro2(n) ex1(n/2) end if return end ex1 3.用Floyd 算法求下图每一对顶点之间的最短路径长度,计算矩阵D 0,D 1,D 2和D 3,其中D k [i, j]表示从顶点i 到顶点j 的不经过编号大于k 的顶点的最短路径长度。

三.算法填空题(共34分) 1.(10分)设n 个不同的整数按升序存于数组A[1..n]中,求使得A[i]=i 的下标i 。

下面是求解该问题的分治算法。

算法 SEARCH 输入:正整数n ,存储n 个按升序排列的不同整数的数组A[1..n]。

输出:A[1..n]中使得A[i]=i 的一个下标i ,若不存在,则输出 no solution 。

i=find ( (1) ) if i>0 then output i else output “no solution” end SEARCH 过程 find (low, high) // 求A[low..high] 中使得A[i]=i 的一个下标并返回,若不存在,考生 信息 栏 ______学院______系______ 专业 ______年级姓名______学号_____ 装订线《算法设计与分析》期考试卷(A)标准答案 一. 填空题:1. 元运算 考生 信 息 栏 ______学院______系______ 专业 ______年级姓名______ 学号_____ 装订线2. O3.∑∈n D I I t I p )()(4. 将规模为n 的问题分解为子问题以及组合相应的子问题的解所需的时间5. 分解,递归,组合6. 在问题的状态空间树上作带剪枝的DFS 搜索(或:DFS+剪枝)7. 前者分解出的子问题有重叠的,而后者分解出的子问题是相互独立(不重叠)的8. 局部9. 高10. 归并排序算法11. 不同12. v=random (low, high); 交换A[low]和A[v]的值随机选主元13. 比较n二. 计算题和简答题:1. 阶的关系:(1) f(n)= O(g(n))(2) f(n)=Ω(g(n))(3) f(n)=Ω(g(n))(4) f(n)= O(g(n))(5) f(n)=Θ(g(n))阶最低的函数是:100阶最高的函数是:n 32. 该递归算法的时间复杂性T(n)满足下列递归方程:⎩⎨⎧>+===1n ,n log T(n/2)T(n)1n , 1T(n)2 将n=k2, a=1, c=2, g(n)=n log 2, d=1代入该类递归方程解的一般形式得: T(n)=1+∑-=1k 0i i 22n log =1+k n log 2-∑-=1k 0i i =1+ k n log 2-2)1k (k -=n log 2122+n log 212+1 所以,T(n)= n log 2122+n log 212+1=)(log 2n Θ。

《算法设计与分析》考试题目及答案

《算法设计与分析》考试题目及答案

《算法分析与设计》期末复习题一、选择题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.能采用贪心算法求最优解的问题,一般具有的重要性质为:(A)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。

计算机算法设计与分析期末试题4套(含答案)

计算机算法设计与分析期末试题4套(含答案)

(1)用计算机求解问题的步骤:一、问题分析二、数学模型成立3、算法设计与选择4、算法指标五、算法分析六、算法实现7、程序调试八、结果整理文档编制(2)算法概念:算法是指在解决问题时,依照某种机械步骤必然可以取得问题结果的处置进程(3)算法的三要素一、操作二、控制结构3、数据结构算法具有以下5个属性:有穷性:一个算法必需老是在执行有穷步以后结束,且每一步都在有穷时间内完成。

肯定性:算法中每一条指令必需有确切的含义。

不存在二义性。

只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的大体运算执行有限次来实现的。

输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。

输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。

算法设计的质量指标:正确性:算法应知足具体问题的需求;可读性:算法应该好读,以有利于读者对程序的理解;健壮性:算法应具有容错处置,当输入为非法数据时,算法应对其作出反映,而不是产生莫名其妙的输出结果。

效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执行进程中所需要的最大存储空间。

一般这二者与问题的规模有关。

常常采用的算法主要有迭代法、分而治之法、贪婪法、动态计划法、回溯法、分支限界法迭代法也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方式。

利用迭代算法解决问题,需要做好以下三个方面的工作:一、肯定迭代模型。

在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、成立迭代关系式。

所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。

迭代关系式的成立是解决迭代问题的关键,通常可利用递推或倒推的方式来完成。

三、对迭代进程进行控制。

在何时结束迭代进程?这是编写迭代程序必需考虑的问题。

不能让迭代进程无停止地重复执行下去。

迭代进程的控制通常可分为两种情况:一种是所需的迭代次数是个肯定的值,可以计算出来;另一种是所需的迭代次数无法肯定。

(完整word版)算法设计与分析课程期末试卷

(完整word版)算法设计与分析课程期末试卷

华南农业大学期末考试试卷(A卷)2007学年第一学期考试科目: 算法分析与设计考试类型: (开卷)考试时间: 120分钟学号姓名年级专业一、选择题(20分, 每题2分)1.void hanoi(int n, int a, int b, int c){if (n > 0){hanoi(n-1, a, c, b)。

move(a,b)。

hanoi(n-1, c, b, a)。

}}上述算法的时间复杂度为A.A. O(2n)B. O(nlog n)C. Θ(n!)D. Θ(nn)2.当一个确定性算法在最坏情况下的计算复杂性与其在平均情况下的计算复杂性有较大差别时, 可以使用B来消除或减少问题的好坏实例间的这种差别.(A)数值概率算法(B)舍伍德算法(C)拉斯维加斯算法(D)蒙特卡罗算法3.对于下列二分搜索算法, 正确的是D.(A)public static int binarySearch(int[] a, int x, int n){int left = 0, right = n-1。

while(left <= right){int middle = (left + right) / 2。

if(x == a[middle]) return middle。

if(x > a[middle]) left = middle。

else right = middle。

}//whilereturn –1。

}(B)public static int binarySearch(int[] a, int x, int n) {int left = 0, right = n-1。

while(left+1 != right){int middle = (left + right) / 2。

if(x >= a[middle]) left = middle。

else right = middle。

}//whileif(x == a[left]) return left。

算法设计与分析试题(三合一)答案.(优选)

算法设计与分析试题(三合一)答案.(优选)

算法设计与分析试题(三合一)答案算法分析与设计模拟试题一答案一、填空题答案(每小题4分,共计40分)1. 最坏、最好、平均、最坏2.)(2nO、)(log nO3. 常数因子4. 直接或间接地调用自身、用函数自身给出定义5. 最好、局部最优选择6. 贪心选择性质、最优子结构性质7. 贪心算法、动态规划算法8. 较小、互相独立、相同、合并9. 最优子结构(性质)、子问题重叠(性质)10.动态规划算法、贪心算法。

二、简答题答案(每小题10分,共计40分)1. 如果只需要求解问题的最优值,动态规划算法步骤如下:(1)找出最优解的性质,并刻画其结构特征;(2)递归地定义最优值;(3)以自底向上的方式计算出最优值;如果需要构造最优解,则还需要加上如下步骤:(4)根据计算最优值时得到的信息,构造最优解。

2. 所谓贪心选择性质是指,所求问题的全局最优解可以通过一系列局部最优选择,即贪心选择来达到。

3. 如果G的子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树。

生成树上各边权的总和称为该生成树的耗费。

在G的所有生成树中,耗费最小的生成树称为G的最小生成树。

4. 动态规划算法需要知道所有子问题的解,而贪心算法不需要知道所有子问题的解,它只是在每一步迭代中选择看起来最好的解,并不从整体进行最优考虑,因此效率较高。

三、算法分析和设计题答案(每小题10分,共计20分)1. 汉诺塔问题的递归算法如下:public static void Hanoi(int n, int a, int b, int c){if( n>0 ){Hanoi( n-1, a,c,b );Move( a, b );Hanoi( n-1, c,b,a );}}2. 算法如下:输入:正整数n和存储n个元素的数组a[1..n],被搜索的元素x输出:若x 在数组中则返回其下标否则返回0i=binarysearch(1,n,a,x); return I;end BINARYSEARCH1 过程 binarysearch(low,high,a,x)//在数组a 的下标为low 到high 范围内寻找x, //若找到x 则返回其下标否则返回0 if low>high then return 0; else mid=[]2/)(high low +;if a[mid]=x thenreturn mid;else if a[mid]<x thenreturn binarysearch(low,mid-1,a,x); else return binarysearch(mid+1,high,a,x); end if end if算法分析与设计模拟试题二答案一、填空题答案(每小题4分,共计40分) 1. 程序设计语言、有限性 2. 最坏3. 递归算法、递归函数4. 贪心算法、动态规划算法5. )(2n O 、O(C n )6.n log 、n 20、25n 、3n7. 分治策略、已排好序、)(log n O 、)(n O 8. 最优子结构(性质)、子问题重叠(性质) 9. 自顶向下、自底向上 10. 贪心算法、动态规划算法。

(完整版)算法设计与分析期末考试卷及答案a

(完整版)算法设计与分析期末考试卷及答案a

e i rb ei n一.填空题: 1. 元运算2. O 3.∑∈nD I I t I p )()(4. 将规模为n 的问题分解为子问题以及组合相应的子问题的解所需的时间5. 分解,递归,组合6. 在问题的状态空间树上作带剪枝的DFS 搜索(或:DFS+剪枝)7. 前者分解出的子问题有重叠的,而后者分解出的子问题是相互独立(不重叠)的8. 局部9. 高10. 归并排序算法11. 不同12. v=random (low, high); 交换A[low]和A[v]的值 随机选主元13. 比较n二.计算题和简答题:1. 阶的关系:(1) f(n)= O(g(n))(2) f(n)=(g(n))Ω (3) f(n)=(g(n))Ω (4) f(n)= O(g(n))3. (1) i>=1 (2)k[i]+1 (3) 1(4) i+1 (5) k[i]=0 (6) tag[x, y]=0(7) x=x-dx[k[i]]; y=y-dy[k[i]]四.算法设计题:1. 贪心选择策略:从起点的加油站起每次加满油后不加油行驶尽可能远,直至油箱中的油耗尽前所能到达的最远的油站为止,在该油站再加满油。

算法MINSTOPS输入:A、B两地间的距离s,A、B两地间的加油站数n,车加满油后可行驶的公里数m,存储各加油站离起点A的距离的数组d[1..n]。

输出:从A地到B地的最少加油次数k以及最优解x[1..k](x[i]表示第i次加油的加油站序号),若问题无解,则输出no solution。

d[n+1]=s; //设置虚拟加油站第n+1站。

for i=1 to nif d[i+1]-d[i]>m thenoutput “no solution”; return //无解,返回end ifend fork=1; x[k]=1 //在第1站加满油。

s1=m //s1为用汽车的当前油量可行驶至的地点与A点的距离i=2while s1<sif d[i+1]>s1 then //以汽车的当前油量无法到达第i+1站。

《算法分析与设计》期末考试复习题

《算法分析与设计》期末考试复习题

《算法分析与设计》期末考试复习题《算法分析与设计》期末复习题贪⼼法的当前选择可能要依赖已经作出的所有选择,但不依赖于有待于做出的选择和⼦问题。

因此贪⼼法⾃顶向下,⼀步⼀步地作出贪⼼选择;⽽分治法中的各个⼦问题是独⽴的(即不包含公共的⼦问题),因此⼀旦递归地求出各⼦问题的解后,便可⾃下⽽上地将⼦问题的解合并成问题的解。

不⾜之处:如果当前选择可能要依赖⼦问题的解时,则难以通过局部的贪⼼策略达到全局最优解;如果各⼦问题是不独⽴的,则分治法要做许多不必要的⼯作,重复地解公共的⼦问题。

解决上述问题的办法是利⽤动态规划。

该⽅法主要应⽤于最优化问题,这类问题会有多种可能的解,每个解都有⼀个值,⽽动态规划找出其中最优(最⼤或最⼩)值的解。

若存在若⼲个取最优值的解的话,它只取其中的⼀个。

在求解过程中,该⽅法也是通过求解局部⼦问题的解达到全局最优解,但与分治法和贪⼼法不同的是,动态规划允许这些⼦问题不独⽴,(亦即各⼦问题可包含公共的⼦问题)也允许其通过⾃⾝⼦问题的解作出选择,该⽅法对每⼀个⼦问题只解⼀次,并将结果保存起来,避免每次碰到时都要重复计算。

因此,动态规划法所针对的问题有⼀个显著的特征,即它所对应的⼦问题树中的⼦问题呈现⼤量的重复。

动态规划法的关键就在于,对于重复出现的⼦问题,只在第⼀次遇到时加以求解,并把答案保存起来,让以后再遇到时直接引⽤,不必重新求解。

⼀、选择题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)。

算法分析期末试题集答案(6套)1

算法分析期末试题集答案(6套)1

《算法分析与设计》一、解答题 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]},则按时完成所有任务最少需要几台机器?(提示:使用贪心算法)画出工作在对应的机器上的分配情况。

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到其它顶点间最短路径。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法分析与设计期末考试模拟试题一
课程名称:__ 算法分析与设计 考试形式: 闭 卷
学习中心:_________ 考试时间: 90分钟
姓 名:_____________ 学 号:
一、填空题(每小题4分,共计40分)
1. 通常只考虑三种情况下的时间复杂度,即 情况、
情况和 情况下的时间复杂度,分别记为T max (N)、T min
(N) 和T avg (N),实践表明可操作性最好且最有实际价值的是 情况下的时间复杂度。

2. n n 1032 的渐近表达式是 ,
)log(3n 的渐近表达式是 。

3. 根据符号O 的定义易知O(1)=O(2),用O(1)和O(2)表示同一个方法
时,差别仅在于其中的 。

4. 递归算法是指 的算法,递归函数
是指 的
函数。

5. 贪心算法总是做出在当前看来_____________的选择,也就是说,贪
心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的
________________。

6. 如果某问题具有________________________和
___________________________两个重要性质,该问题可以用贪心算
法求解。

7. 单源最短路径问题适合用_______________算法来求解、0-1背包问
题适合用_____________算法来求解。

8. 分治法是将一个规模为n的问题分解为k个规模________的子问题,
这些子问题___________且与原问题__________。

递归地求解这些子
问题,然后将各个子问题的解_________得到原问题的解。

9. 动态规划算法的两个基本要素是____________________和
____________________。

10.___ 算法可以有效地解凸多边形最优三角剖分问题,
而____________算法是求解最优装载问题的有效方法。

二、简答题(每小题10分,共计40分)
1. 如果只需要求解问题的最优值,动态规划算法步骤是什么?如果需要构造最优解,则还需要加上什么步骤?
2. 请简述什么是贪心选择性质
3. 请简述什么是最小生成树。

4. 请简述贪心算法比动态规划算法效率高的原因。

三、算法分析和设计题(每小题10分,共计20分)
1. 请写出汉诺塔问题的简要递归算法。

2. 请设计一个在有序数组a[1..n]中二分搜索元素x的递归算法,要求若x在数组中则返回其下标否则返回0.
算法分析与设计模拟试题一答案
一、填空题答案(每小题4分,共计40分)
1. 最坏、最好、平均、最坏
2.
)(2n O 、)(log n O 3. 常数因子
4. 直接或间接地调用自身、用函数自身给出定义
5. 最好、局部最优选择
6. 贪心选择性质、最优子结构性质
7. 贪心算法、动态规划算法
8. 较小、互相独立、相同、合并
9. 最优子结构(性质)、子问题重叠(性质)
10.动态规划算法、贪心算法。

二、简答题答案(每小题10分,共计40分)
1. 如果只需要求解问题的最优值,动态规划算法步骤如下:
(1)找出最优解的性质,并刻画其结构特征;
(2)递归地定义最优值;
(3)以自底向上的方式计算出最优值;
如果需要构造最优解,则还需要加上如下步骤:
(4)根据计算最优值时得到的信息,构造最优解。

2. 所谓贪心选择性质是指,所求问题的全局最优解可以通过一系列局
部最优选择,即贪心选择来达到。

3. 如果G 的子图G ’是一棵包含G 的所有顶点的树,则称G ’为G 的生成树。

生成树上各边权的总和称为该生成树的耗费。

在G 的所有生成树中,耗费最小的生成树称为G 的最小生成树。

4. 动态规划算法需要知道所有子问题的解,而贪心算法不需要知道所有子问题的解,它只是在每一步迭代中选择看起来最好的解,并不从整体进行最优考虑,因此效率较高。

三、算法分析和设计题答案(每小题10分,共计20分)
1. 汉诺塔问题的递归算法如下:
public static void Hanoi(int n, int a, int b, int c)
{ if( n>0 )
{
Hanoi( n-1, a,c,b );
Move( a, b );
Hanoi( n-1, c,b,a );
}
} 2. 算法如下:
输入:正整数n 和存储n 个元素的数组a[1..n],被搜索的元素x 输出:若x 在数组中则返回其下标否则返回0
i=binarysearch(1,n,a,x);
return I;
end BINARYSEARCH1
过程 binarysearch(low,high,a,x)
//在数组a 的下标为low 到high 范围内寻找x, //若找到x 则返回其下标否则返回0
if low>high then
return 0;
else
mid=[]2/)(high low +;
if a[mid]=x then
return mid;
else if a[mid]<x then
return binarysearch(low,mid-1,a,x); else return binarysearch(mid+1,high,a,x); end if
end if。

相关文档
最新文档