算法设计与分析试题A及答案

分治法所能解决的问题一般具有的几个特征不包括()

A.该问题的规模缩小到一定的程度就可以容易地解决

B.该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质

C.利用该问题分解出的子问题的解不可以合并为该问题的解

D.原问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题


参考答案:C


该问题的规模缩小到一定的程度就可以容易地解决是分治法的一个特征。()

此题为判断题(对,错)。


正确答案:√


求解整数规划问题,可以通过先求解无整数约束的松弛问题最优解,然后对该最优解取整求得原整数规划的最优解


参考答案:错


采用动态规划策略解决问题的显著特征是满足最优性原理,其含义是(50)。

A.当前所做出的决策不会影响后面的决策

B.原问题的最优解包含其子问题的最优解

C.问题可以找到最优解,但利用贪心法不能找到最优解

D.每次决策必须是当前看来最优的决策才可以找到最优解


正确答案:B
解析:某些复杂问题不能简单分解成几个小问题,然后再在小问题解的基础上简单综合得到问题的解,因为这样费事费力,重复度高。因此需要引入一个数组,把所有子问题的解都存在其中,问题的最后解将从这个序列中得到。往往是选取概率最大的、得分最高的子问题的解,可以综合得到问题的最后解,这就是动态规划法的基本思想。


采用动态规划策略求解问题的显著特征是满足最优性原理,其含义是______。

A.当前所做出的决策不会影响后面的决策

B.原问题的最优解包含其子问题的最优解

C.问题可以找到最优解,但利用贪心法不能找到最优解

D.每次决策必须是当前看来最优的决策才可以找到最优解

A.

B.

C.

D.


正确答案:B


算法设计与分析试题A及答案一填空题:(每题4分,共20分)1. 算法是指(解决问题的)一种方法或一个过程,是(若干指令的)有穷序列。2程序是(算法用某种程序设计语言的)具体实现。程序可以不满足算法的(有限性)性质。3. 贪心选择性质是指所求问题的 整体最优解 可以通过一系列 局部最优的选择 来达到。4递归函数的两大基本要素是_递归方程 和 边界条件_ .5在回溯法中,一个问题的解空间是指一个大的解决方案可以看作是由若干个小的决策组成。很多时候它们构成一个决策序列。解决一个问题的所有可能的决策序列构成该问题的解空间.二简答题:(每题5分,共20分)1. 简述分治法所能解决的问题一般应具有的特征。1.)该问题的规模缩小到一定的程度就可以容易地解决;2.)该问题具有最优子结构性质;3.)利用该问题分解出的子问题的解可以合并为该问题的解;4.)该问题所分解出的各个子问题是相互独立的 。2设有待安排的8个活动的开始时间和结束时间如下表。请采用贪心算法给出活动安排序列,要求安排尽可能多的活动。i 12345678Si4510 28571fi6715410993解:将待安排的8个活动的开始时间和结束时间按结束时间的非减序排列如下:i 12345678Si124557810fi3467991015用贪心算法给出活动安排序列:1,3,6,8。贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。3请描述分治法的具体过程。 将原问题划分成k个子问题。对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。4. Fibonacci数列如下定义: 1、 请设计一个递归算法,计算F(n)。2、 分析算法的时间复杂性。解 1、int fibonacci(int n) if (n = 1) return 1; return fibonacci(n-1)+fibonacci(n-2); 2、T(n)=T(n-1)+T(n-2)。三算法分析解答题:(每小题20分,共60分)1考虑金钱兑换问题:有一个货币系统,它有n种硬币,它们的面值为v1,v2,vn,其中 v1=1. 我们想这样来兑换价值为y的钱,要让硬币的数目最少。更形式地,我们要让下面的量 在约束条件 下达到最小. 其中x1, x2, , xn是非负整数.1) 用贪心算法求解该问题;2) 如果硬币的面值有1分,5分,7分和11分,给出反例说明用贪心算法并不总是有效的。1) 贪心伪代码为:Greedy_exchange ( int v, int y, int num, int n) int i=0;for( i=0;i0) numi=y/vi; y=y % numi+; return num;2) 反例:假如要给顾客找15分钱,按照上述贪心策略,则应将15分分解为:11分+1分+1分+1分+1分。而事实上15分可分解为:5分+5分+5分。显然后者的张数更少。2. 假设有n(nN且n1)个硬币,已知其中有一个是假币且假币较真币轻. 请设计分治算法求解该问题.并给出其复杂度分析.Feit_money(low, high) / 假定伪币较真币轻 float mid; if ( high-low=1 ) if (AlowAhigh) return Ahigh; else mid=(low+high)/2; if (high-low+1)%2)=0 sum1=sum(low, mid); sum2=sum(mid+1, high); else sum1=sum(low, mid-1); sum2=sum(mid+1, high); if sum1=sum2 return Amid;else if (sum1sum2) (high-low+1)%2=0? Feit_money(low, mid) : Feit_money(low, mid-1); else Feit_money(mid+1, high); return 0; /其时间复杂度为:O(log n).3. 设序列是序列和的最长公共子序列。a) 请说明最长公共子序列具有最优子结构性质。b) cij记录序列i和的最长公共子序列的长度。由最长公共子序列问题的最优子结构性质建立子问题最优值cij的递归关系。c) 写出寻找最长公共子序列的算法。解 a、设Xm=x1,x2,xm和Yn=y1,y2,yn的最长公共子序列为Zk=z1,z2,zk ,则(1)若xm=yn,那么zk=xm=yn,且Zk-1是Xm-1和Yn-1的最长公共子序列。(2)若xmyn且zkxm,那么Zk是Xm-1和Yn的最长公共子序列。(3)若xmyn且zkyn,那么Zk是Xm和Yn-1的最长公共子序列。由此可见,2个序列的最长公共子序列包含了这2个序列的前缀的最长公共子序列。因此,最长公共子序列问题具有最优子结构性质。 b、当i=0或j=0时,空序列是Xi和Yj的最长公共子序列。故此时Cij=0。其它情况下,由最优子结构性质可建立递归关系如下: c、void LCSLength(int m,int n,char *x,char *y,int *c,int *b) int i,j; for (i = 1; i = m; i+) ci0 = 0; for (i = 1; i = n; i+) c0i = 0; for (i = 1; i = m; i+) for (j = 1; j =cij-1) cij=ci-1j; bij=2; else cij=cij-1; bij=3; 构造最长公共子序列 void LCS(int i,int j,char *x,int *b) if (i =0 | j=0) return; if (bij= 1) LCS(i-1,j-1,x,b); coutxi; else if (bij= 2) LCS(i-1,j,x,b); else LCS(i,j-1,x,b);算法设计与分析试卷B与解答一填空题:(每题4分,共20分)1. 算法的特性有 0至多个输入, 至少一个输出, 指令无歧义性,指令条数有限且每条指令执行时间有限 .2直接或间接地调用自身的算法称为 递归 算法。用函数自身给出定义的函数称为 递归 函数。3在回溯法中,为了避免无效的搜索,通常采用两种剪枝策略,分别为约束剪枝 和限界剪枝4算法的复杂性是指 算法运行所需要的 计算机资源. 算法的时间复杂性T(n) 是指算法 所需要的时间资源的量;其中n是问题的规模。5动态规划算法的两大基本要素分别为 最优子结构性质和子问题的重叠性质二简答题:(每小题5分,共20分)1. 给定2个序列和,说明X和Y的最长公共子序列问题具有最优子结构性质。 设序列Xm=x1,x2,xm和Yn=y1,y2,yn的最长公共子序列为Zk=z1,z2,zk ,则(1)若xm=yn,那么zk=xm=yn,且Zk-1是Xm-1和Yn-1的最长公共子序列。(2)若xmyn且zkxm,那么Zk是Xm-1和Yn的最长公共子序列。(3)若xmyn且zkyn,那么Zk是Xm和Yn-1的最长公共子序列。 由此可见,2个序列的最长公共子序列包含了这2个序列的前缀的最长公共子序列。因此,最长公共子序列问题具有最优子结构性质。2. 简述常见的两种分支限界法。 (1)队列式(FIFO)分支限界法:按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。 (2)优先队列式分支限界法:按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。3. 假设以加法和乘法为关键操作,估算下述n 次多项式求值函数的时间复杂度(取T为整型) template T PolyEval(T coeff, int n, const T& x) / 计算 n 次多项式的值, coeff0:n 为多项式的系数 T y=1, value=coeff0; for(i=1;i=n;i+) y*=x; value+=y*coeffi; return value; 解答: T PolyEval(T coeff, int n, const T& x) / 计算 n 次多项式的值, coeff0:n 为多项式的系数 T y=1, value=coeff0; for(i=1;i=n;i+) /n 循环 / 累加下一项 y*=x; /一次乘法 value+=y*coeffi; /一次加法和一次乘法 return value; / 3n 次基本操作4. 动态规划算法的基本思想是什么? 它和分治法有什么区别和联系? 答:动态规划算法的基本思想为:该方法的思路也是将待求解的大问题分成规模较小的子问题,但所得的各子问题之间有重复

分治法也许是使用最广泛的算法设计方法,以下关于分治法的结论中正确的是(54)。

A.分治法能解决动态规划方法所能解决的任何问题

B.分治法找到的问题的解一定是最优解

C.用分治法能求出任何问题的解

D.分治法只能把大问题简单分解成一些较小的问题


正确答案:D
解析:分治法(DivideandConquer)是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解决这些子问题,然后把各子问题的解合并得到原问题的解。ABC选项中的“任何”、“一定”词汇违反常识,从逻辑上可判明其错误。


采用动态规划策略求解问题的显著特征是满足最优性原理,其含义是(52)。

A.当前所做出的决策不会影响后面的决策

B.原问题的最优解包含其子问题的最优解

C.问题可以找到最优解,但利用贪心法不能找到最优解

D.每次决策必须是当前看来最优的决策才可以找到最优解


正确答案:B
解析:动态规划策略设计算法的第一步通常是刻画最优解结构。当问题的最优解包含了子问题的最优解时,称该问题具有最优子结构性质。问题的最优子结构性质提供了该问题可用动态规划算法求解的重要线索。动态规划策略设计算法利用问题的最优子结构性质,以自底向上的方式递归地从子问题的最优解逐步构造出整个问题的最优解。


在求解某问题时,经过分析发现该问题具有最优子结构性质,若定义问题的解空间,以深度优先的方式搜索解空间,则采用( )算法设计策略。

A.动态规划
B.贪心
C.回溯
D.分支限界

答案:C
解析:
分治法的设计思想是将一个难以直接解决的大问题分解成一些规模较少的相同问题以便各个击破,分而治之。
动态规划法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则相同的子问题会被求解多次,以至于最后解决原问题需要耗费指数级时间。
贪心法经常用于解决最优化问题,但他的最优往往是从局部最优来考虑的,每一步都选最优的方案,但这种方案不一定能得到整体上的最优解。
回溯法是一种既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根节点出发搜索解空间树。
题目描述中提到,需要解决的问题具有最优子结构性质,且求解过程中子问题被重复求解,这种情况下如果采用分治法,效率会很低,所以应采用动态规划法。而“以深度优先的方式搜索解空间”则明显是在采用回溯法。


已知初始问题的描述,通过一系列变换把此问题最终变为一个子问题集合;这些子问题的解可以直接得到,从而解决了初始问题。这是知识表示法叫()

  • A、状态空间法
  • B、问题归约法
  • C、谓词逻辑法
  • D、语义网络法

正确答案:B


使用分治法求解不需要满足的条件是()。

  • A、子问题必须是一样的
  • B、子问题不能够重复
  • C、子问题的解可以合并
  • D、原问题和子问题使用相同的方法解

正确答案:A

更多 “算法设计与分析试题A及答案” 相关考题
考题 一个整数规划问题如果存在两个以上的最优解,则该问题一定有无穷多最优解。正确答案:错误

考题 发现与明确问题是设计的第一个环节,明确设计要解决的技术问题不包括()A、判断问题是否值得解决B、判断问题是否当前可以解决C、判断解决该问题所得到的产出是否比投入多D、判断问题是否能够解决正确答案:C

考题 填空题用回溯法解批处理作业调度问题时,该问题的解空间结构为()结构。正确答案:排列树解析:暂无解析

考题 单选题将一个较大规模的问题分解为较小规模的子问题,求解子问题、合并子问题的解得到整个问题的解的算法是()。A 贪心法B 分治法C 动态规划法D 回朔法正确答案:A解析:暂无解析

考题 填空题用回溯法解0/1背包问题时,该问题的解空间结构为()结构。正确答案:子集树解析:暂无解析

考题 单选题分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。这要求原问题和子问题()A 问题规模相同,问题性质相同B 问题规模相同,问题性质不同C 问题规模不同,问题性质相同D 问题规模不同,问题性质不同正确答案:D解析:暂无解析

考题 单选题已知初始问题的描述,通过一系列变换把此问题最终变为一个子问题集合;这些子问题的解可以直接得到,从而解决了初始问题。这是知识表示法叫()A 状态空间法B 问题归约法C 谓词逻辑法D 语义网络法正确答案:B解析:暂无解析

考题 单选题采用动态规划策略求解问题的显著特征是满足最优性原理,其含义是()。A 当前所作决策不会影响后面的决策B 原问题的最优解包含其子问题的最优解C 问题可以找到最优解,但利用贪心算法不能找到最优解D 每次决策必须是当前看来的最优决策才可以找到最优解正确答案:D解析:暂无解析

考题 将一个较大规模的问题分解为较小规模的子问题,求解子问题、合并子问题的解得到整个问题的解的算法是()。A、贪心法B、分治法C、动态规划法D、回朔法正确答案:B

考题 分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决子问题,最后将子问题的解组合起来形成原问题的解。这要求原问题和子问题()A、问题规模相同,问题性质相同B、问题规模相同,问题性质不同C、问题规模不同,问题性质相同D、问题规模不同,问题性质不同正确答案:C