《算法复习题(精炼版)》由会员分享,可在线阅读,更多相关《算法复习题(精炼版)(12页珍藏版)》请在金锄头文库上搜索。
1、填空题填空题动态规划算法的基本要素为:最优子结构性质与重叠子问题性质1)算法分析中,记号 O 表示渐进上界,记号表示渐进下界, 记号表示紧渐进界。 2)回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。 3)分支限界法在问题的解空间树中,按广度优先策略,从根结点出发搜索解空间树。所谓贪心选择性质是指(所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到) 。所谓最优子结构性质是指(问题的最优解包含了其子问题的最优解) 。回溯法是指(具有限界函数的深度优先生成法) 。回溯法的算法框架按照问题的解空间一般分为(子集树)算法框架与(排列树)算法框架。4)二分搜索算法是
2、利用分治策略实现的算法。 5)衡量一个算法好坏的标准是时间复杂度低 6)最长公共子序列算法利用的算法是动态规划法 7)Strassen 矩阵乘法是利用分治策略实现的算法 8)回溯法搜索状态空间树是按照深度优先遍历的顺序。 9)算法中通常以自底向下的方式求解最优解的是动态规划法 10) 背包问题的贪心算法所需的计算时间为 O(nlogn) 11) 0-1 背包问题的回溯算法所需的计算时间为 O(n2n) 12) 用动态规划算法解决最大字段和问题,其时间复杂性为 n13)一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型 问题的一系列运算,此外,算法还应具有以下五个重要特性:_有穷性
3、,确 定性,可行性,输入,输出。1.算法的复杂性有 时间 复杂性和 空间 复杂性之分。2、程序是 算法 用某种程序设计语言的具体实现。3、算法的“确定性”指的是组成算法的每条 指令 是清晰的,无歧义的。4.矩阵连乘问题的算法可由 动态规划 设计实现。6、算法是指解决问题的 一种方法 或 一个过程 。7、从分治法的一般设计模式可以看出,用它设计出的程序一般是 递归算法 。8、问题的 最优子结构性质 是该问题可用动态规划算法或贪心算法求解的关键特征。9、以深度优先方式系统搜索问题解的算法称为 回溯法 。10、数值概率算法常用于 数值问题 的求解。15、使用回溯法进行状态空间树裁剪分支时一般有两个标
4、准:约束条件和目标函数的界,N 皇后问题和 0/1 背包问题正好是两种不同的类型,其中同时使用约束条件和目标函数的界进行裁剪的是 0/1 背包问题 ,只使用约束条件进行裁剪的是 N 皇后问题 。16、 贪心选择性质 是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。17、矩阵连乘问题的算法可由 动态规划 设计实现。19.贪心算法的基本要素是 贪心选择 质和 最优子结构 性质 。21. 动态规划算法的基本思想是将待求解问题分解成若干 子问题 ,先求解 子问题 ,然后从这些 子问题 的解得到原问题的解。23、大整数乘积算法是用 分治法 来设计的。26、 贪心选择性质 是贪心算法
5、可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。27.快速排序算法是基于 分治策略 的一种排序算法。30.回溯法是一种既带有 系统性 又带有 跳跃性 的搜索算法。 33回溯法搜索解空间树时,常用的两种剪枝函数为 约束函数 和 限界函数 。34.任何可用计算机求解的问题所需的时间都与其 规模 有关。35.快速排序算法的性能取决于 划分的对称性 。37. 图的 m 着色问题可用 回溯 法求解,其解空间树中叶子结点个数是 mn ,解空间树中每个内结点的孩子数是 m 。 简答题简答题1.用计算机求解问题的步骤:用计算机求解问题的步骤:1、问题分析 2、数学模型建立 3、算法设计与选择 4、
6、算法指标 5、算法分析 6、算法实现 7、程序调试 8、结果整理文档编制2.2.最优二叉搜索树问题的动态规划算法最优二叉搜索树问题的动态规划算法void binarysearchtree(int a,int b,int n,int *m,int *s,int *w) int i,j,k,t,l;for(i=1;i1 时)。写成递归函数有:int fib(int n) if (n=0) return 0;if (n=1) return 1;if (n1) return fib(n-1)+fib(n-2);2. 算法定义:算法定义:算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过
7、算法是指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程程3.算法的三要素算法的三要素1、操作 2、控制结构 3、数据结构4. 算法具有以下算法具有以下 5 个属性个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。确定性:算法中每一条指令必须有确切的含义。不存在二义性。只有一个入口和一个出口可行性:一个算法是可行的就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。经常采用的算法主要有迭代法、分治法、贪婪
8、法、动态规划法、回溯法、分支经常采用的算法主要有迭代法、分治法、贪婪法、动态规划法、回溯法、分支限界法限界法8 8. .分治法的基本思想是:分治法的基本思想是:将一个规模为 n 的问题分解为 k 个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。9.分分治治法法所所能能解解决决的的问问题题一一般般具具有有以以下下几几个个特特征征: (1)该问题的规模缩小到一定的程度就可以容易地解决; (2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解; (4)该问题
9、所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。 10、分分治治法法的的基基本本步步骤骤 分治法在每一层递归上都有三个步骤: (1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; (2)解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题; (3)合并:将各个子问题的解合并为原问题的解。11. 动态规划的基本思想动态规划的基本思想动态规划的实质是分治思想分治思想和解决冗余解决冗余,因此,动态规划动态规划是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。13. . 分治法与动
10、态规划法的相同点是:分治法与动态规划法的相同点是:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。两者的不同点是两者的不同点是:适合于用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。而用分治法求解的问题,经分解得到的子问题往往是互相独立的。14. 回溯法回溯法回溯法也称为试探法,该方法首先暂时放弃关于问题规模大小的限制,并将问题的候选解按某种顺序逐一枚举和检验。当发现当前候选解不可能是解时,就选择下一个候选解;倘若当前候选解除了还不满足问题规模要求外,满足所有其他要求时,继续扩大当前候选解的规模,并继续试探。如果当前候选解满足包括问题规模在内的
11、所有要求时,该候选解就是问题的一个解。在回溯法中,放弃当前候选解,寻找下一个候选解的过程称为回溯。扩大当前候选解的规模,以继续试探的过程称为向前试探。20. 回溯法中常见的两类典型的解空间树是子集树和排列树。回溯法中常见的两类典型的解空间树是子集树和排列树。当所给的问题是从 n 个元素的集合 S 中找出满足某种性质的子集时,相应的解空间树称为子集树。这类子集树通常有 2n 个叶结点,遍历子集树需O(2n)计算时间 。当所给的问题是确定 n 个元素满足某种性质的排列时,相应的解空间树称为排列树。这类排列树通常有 n!个叶结点。遍历排列树需要 O(n!)计算时间。22.22. 请叙述动态规划算法与
12、贪心算法的异同。请叙述动态规划算法与贪心算法的异同。共同点:都需要最优子结构性质,都用来求有优化问题。不同点:动态规划:每一步作一个选择依赖于子问题的解。贪心方法:每一步作一个选择不依赖于子问题的解。动态规划方法的条件:子问题的重叠性质。可用贪心方法的条件:最优子结构性质;贪心选择性质。动态规划:自底向上求解;贪心方法: 自顶向下求解。可用贪心法时,动态规划方法可能不适用;可用动态规划方法时,贪心法可能不适用。23.23. 请说明动态规划方法为什么需要最优子结构性质。请说明动态规划方法为什么需要最优子结构性质。答:最优子结构性质是指大问题的最优解包含子问题的最优解。动态规划方法是自底向上计算各
13、个子问题的最优解,即先计算子问题的最优解,然后再利用子问题的最优解构造大问题的最优解,因此需要最优子结构.26. 在算法复杂性分析中,在算法复杂性分析中,O、 这三个记号的意义是什么?在忽略常数这三个记号的意义是什么?在忽略常数因子的情况因子的情况下,下,O、 分别提供了算法运行时间的什么界?分别提供了算法运行时间的什么界?答:如果存在两个正常数 c 和 N0,对于所有的 NN0,有|f(N)|C|g(N)|,则记作:f(N)= O(g(N)。这时我们说 f(N)的阶不高于 g(N)的阶。若存在两个正常数 C 和自然数 N0,使得当 N N0 时有|f(N)|C|g(N)|,记为f(N)=(g
14、(N)。这时我们说 f(N)的阶不低于 g(N)的阶。如果存在正常数 c1,c2 和 n0,对于所有的 nn0,有 c1|g(N)| |f(N)| c2|g(N)|则记作 f(N)= (g,(N)O、 分别提供了算法运行时间的上界、下界、平均1用动态规划策略求解最长公共子序列问题:(1)给出计算最优值的递归方程。 (2)给定两个序列 X=B,C,D,A,Y=A,B,C,B,请采用动态规划策略求出其最长公共子序列,要求给出过程。答:答:(1) 时时y y0 0且且x xj j当当i i, ,) )j j 1 1, ,c c i i1 1 , ,j jm ma ax x( (c c i i, ,时
15、时y y0 0且且x xj j当当i i, ,1 11 1 j j1 1, ,c c i i0 0时时0 0或或j j当当i i0 0 j j c c i i, ,i ii ii ii i(2) 0 0 0 0 0 0 1 1 1 0 0 1 2 2 0 0 1 2 2 0 1 1 2 2 最长公共子序列:2对下列各组函数 f (n) 和 g (n),确定 f (n) = O (g (n) 或 f (n) =(g (n)或 f(n) =(g(n),并简要说明理由。(1) f(n)=2n; g(n)=n! (2) f(n)=; g (n)=log n2 n(3) f(n)=100; g(n)=log100 (4)