算法设计复习题及答案(一)

算法设计复习题及答案(一)

一、选择题

1、衡量一个算法好坏的标准是( C )。

(A)运行速度快 (B)占用空间少 (C)时间复杂度低 (D)代码短

3、二分搜索算法是利用( A )实现的算法。

(A)分治策略 (B)动态规划法 (C)贪心法 (D)回溯法

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

(A)子问题必须是一样的 (B)子问题不能够重复

(C)子问题的解可以合并 (D)原问题和子问题使用相同的方法解

5、合并排序算法是利用( A )实现的算法。

(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、实现棋盘覆盖算法利用的算法是( A )。

(A)分治法 (B)动态规划法 (C)贪心法 (D)回溯法

10、矩阵连乘问题的算法可由( B)设计实现。

(A)分支界限算法 (B)动态规划算法 (C)贪心算法 (D)回溯算法

11、实现大整数的乘法是利用的算法( C )。

(A)贪心法 (B)动态规划法 (C)分治策略 (D)回溯法

12、最长公共子序列算法利用的算法是( B )。

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

13、下列算法中通常以自底向上的方式求解最优解的是( B )。

(A)备忘录法 (B)动态规划法 (C)贪心法 (D)回溯法

14、下列是动态规划算法基本要素的是( D )。

(A)定义最优解 (B)构造最优解 (C)算出最优解 (D)子问题重叠性质

15、下列不是动态规划算法基本步骤的是( A )。

(A)找出最优解的解空间 (B)构造最优解 (C)算出最优解 (D)定义最优解

16、能采用贪心算法求最优解的问题,一般具有的重要性质为:( A )

(A)最优子结构性质与贪心选择性质 (B)重叠子问题性质与贪心选择性质

(C)最优子结构性质与重叠子问题性质 (D)预排序与递归调用

17、下面问题(B )不能使用贪心法解决。

(A)单源最短路径问题 (B)N皇后问题

(C)最小花费生成树问题 (D)背包问题

18、以下不可以使用分治法求解的是(D )。

(A)棋盘覆盖问题 (B)选择问题 (C)归并排序 (D)0/1背包问题

19、备忘录方法是那种算法的变形( B )。

(A)分治法 (B)动态规划法 (C)贪心法 (D)回溯法

20、下列算法中通常以深度优先方式系统搜索问题解的是( D )。

(A)备忘录法 (B)动态规划法 (C)贪心法 (D)回溯法

21、下面哪种函数是回溯法中为避免无效搜索采取的策略( B )

(A)递归函数 (B)剪枝函数 (C)随机数函数 (D)搜索函数

22、回溯法在问题的解空间树中,按( D )策略,从根结点出发搜索解空间树。

(A)广度优先 (B)活结点优先 (C)扩展结点优先 (D)深度优先

23、回溯法的效率不依赖于下列哪些因素( D )。

(A).满足显约束的值的个数 (B)计算约束函数的时间

(C) 计算限界函数的时间 (D) 确定解空间的时间

24、回溯法解0-1背包问题时的解空间树是( A )。

(A)子集树 (B)排列树 (C)深度优先生成树 (D)广度优先生成树

25、回溯法解旅行售货员问题时的解空间树是( B )。

(A)子集树 (B)排列树 (C)深度优先生成树 (D)广度优先生成树

26、一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。

(A)重叠子问题 (B)最优子结构性质 (C)贪心选择性质 (D)定义最优解

27、下列算法中不能解决0/1背包问题的是( A )

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

28、下面问题( B )不能使用贪心法解决。

(A)单源最短路径问题 (B)N皇后问题 (C)最小生成树问题 (D)背包问题

29、矩阵连乘问题的算法可由( B )设计实现。

(A)分支界限算法 (B)动态规划算法 (C)贪心算法 (D)回溯算法

30、贪心算法与动态规划算法的主要区别是( B )。

(A)最优子结构 (B)贪心选择性质 (C)构造最优解 (D)定义最优解

二、简答题

1、算法重要特性是什么?

  1. 输入、输出、确定性、有限性、可实现性。

2、算法分析的目的是什么?

  1. 分析算法占用计算机资源的情况,对算法做出比较和评价,设计出更好的算法。

3、算法的时间复杂性与问题的什么因素相关?

  1. 算法的时间复杂性与问题的规模相关,是问题大小n的函数。

4、算法的渐进时间复杂性的含义?

4.当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。

5、最坏情况下的时间复杂性和平均时间复杂性有什么不同?

  1. 最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:

W(n) = max{ T(n,I) } , I∈Dn

平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:

A(n) =∑P(I)T(n,I) I∈Dn

6、简述二分检索(折半查找)算法的基本过程。

  1. 设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]

7、背包问题的目标函数和贪心算法最优化量度相同吗?

  1. 不相同。目标函数:获得最大利润。最优量度:最大利润/重量比。

8、采用回溯法求解的问题,其解如何表示?有什么规定?

  1. 问题的解可以表示为n元组:(x1,x2,……xn),xi∈Si, Si为有穷集合,xi∈Si, (x1,x2,……xn)具备完备性,即(x1,x2,……xn)是合理的,则(x1,x2,……xi)(i

9、回溯法的搜索特点是什么?

  1. 在解空间树上跳跃式地深度优先搜索,即用判定函数考察x[k]的取值,如果x[k]是合理的就搜索x[k]为根节点的子树,如果x[k]取完了所有的值,便回溯到x[k-1]。

10、n皇后问题回溯算法的判别函数place的基本流程是什么?

10.将第K行的皇后分别与前k-1行的皇后比较,看是否与它们相容,如果不相容就返回false,测试完毕则返回true。

11、为什么用分治法设计的算法一般有递归调用?

11.子问题的规模还很大时,必须继续使用分治法,反复分治,必然要用到递归。

12、为什么要分析最坏情况下的算法时间复杂性?

12.最坏情况下的时间复杂性决定算法的优劣,并且最坏情况下的时间复杂性较平均时间复杂性游可操作性。

13、简述渐进时间复杂性上界的定义。

13.T(n)是某算法的时间复杂性函数,f(n)是一简单函数,存在正整数No和C,n〉No,有T(n)

14、二分检索算法最多的比较次数?

14.二分检索算法的最多的比较次数为 log n 。

15、快速排序算法最坏情况下需要多少次比较运算?

15.最坏情况下快速排序退化成冒泡排序,需要比较n2次。

16、贪心算法的基本思想?

16.是一种依据最优化量度依次选择输入的分级处理方法。基本思路是:首先根据题意,选取一种量度标准;然后按这种量度标准对这n个输入排序,依次选择输入量加入部分解中。如果当前这个输入量的加入,不满足约束条件,则不把此输入加到这部分解中。

17、回溯法的解(x1,x2,……xn)的隐约束一般指什么?

17.回溯法的解(x1,x2,……xn)的隐约束一般指个元素之间应满足的某种关系。

18、阐述合并排序的分治思路。

18.讲数组一分为二,分别对每个集合单独排序,然后将已排序的两个序列归并成一个含n个元素的分好类的序列。如果分割后子问题还很大,则继续分治,直到一个元素。

19、快速排序的基本思想是什么。

19.快速排序的基本思想是在待排序的N个记录中任意取一个记录,把该记录放在最终位置后,数据序列被此记录分成两部分。所有关键字比该记录关键字小的放在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一次快速排序。之后重复上述过程,直到每一部分内只有一个记录为止。

20、什么是直接递归和间接递归?消除递归一般要用到什么数据结构?

20.在定义一个过程或者函数的时候又出现了调用本过程或者函数的成分,既调用它自己本身,这称为直接递归。如果过程或者函数P调用过程或者函数Q,Q又调用P,这个称为间接递归。消除递归一般要用到栈这种数据结构。

21、试述分治法的基本思想。

21.分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。

22、设计动态规划算法有哪些主要步骤?

22.设计动态规划算法的主要步骤为:

(1)找出最优解的性质,并刻划其结构特征。(2)递归地定义最优值。(3)以自底向上的方式计算出最优值。(4)根据计算最优值时得到的信息,构造最优解。

23、分治法与动态规划法的异同?

23.分治法与动态规划法的相同点是:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

两者的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。而用分治法求解的问题,经分解得到的子问题往往是互相独立的。

24、备忘录方法和动态规划算法相比有何异同?简述之。

24.备忘录方法是动态规划算法的变形。与动态规划算法一样,备忘录方法用表格保存已解决的子问题的答案,在下次需要解此问题时,只要简单地查看该子问题的解答,而不必重新计算。

23、分治法与动态规划法的异同?

23.分治法与动态规划法的相同点是:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

两者的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。而用分治法求解的问题,经分解得到的子问题往往是互相独立的。

24、备忘录方法和动态规划算法相比有何异同?简述之。

24.备忘录方法是动态规划算法的变形。与动态规划算法一样,备忘录方法用表格保存已解决的子问题的答案,在下次需要解此问题时,只要简单地查看该子问题的解答,而不必重新计算。
备忘录方法与动态规划算法不同的是,备忘录方法的递归方式是自顶向下的,而动态规划算法则是自底向上递归的。因此,备忘录方法的控制结构与直接递归方法的控制结构相同,区别在于备忘录方法为每个解过的子问题建立了备忘录以备需要时查看,避免了相同的子问题的重复求解,而直接递归方法没有此功能。

你可能感兴趣的:(数据结构与算法,算法)