算法设计与分析

您所在的位置:网站首页 食品分析第三版期末考试试题 算法设计与分析

算法设计与分析

2023-12-10 16:25| 来源: 网络整理| 查看: 265

第一章 算法引论 1.1 什么是算法?算法与程序有什么区别?

通俗地讲,算法是指解决问题的方法或过程。严格地讲,算法是满足下述性质的指令序列: (1)输入:一个算法有零个或多个外部量作为算法的输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件; (2)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; (3)确定性:组成算法的每条指令是清晰的、无歧义的,即算法的每一步骤必须有确切的定义; (4)有穷性:算法必须能在执行有限个步骤之后终止; (5)可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)。 程序与算法不同。程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质(4)即有限性。

1.2 如何评价一个算法的优劣?

(1)正确性 能正确地实现预期的功能,满足具体问题的需要。处理数据使用的算法是否得当,能不能得到预想的结果。 (2)可读性 易于阅读、理解和交流,便于调试、修改和扩充。写出的算法,能不能让别人看明白,能不能让别人明白算法的逻辑?如果通俗易懂,在系统调试和修改或者功能扩充的时候,使系统维护更为便捷。 (3)健壮性 输入非法数据,算法也能适当地做出反应后进行处理,不会产生预料不到的运行结果。数据的形式多种多样,算法可能面临着接受各种各样的数据,当算法接收到不适合算法处理的数据,算法本身该如何处理呢?如果算法能够处理异常数据,处理能力越强,健壮性越好。 (4)时空性 算法的时空性是该算法的时间性能和空间性能。主要是说算法在执行过程中的时间长短和空间占用多少的问题。

第二章 递归与分治策略 2.1 分治法的设计思想是什么?

将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。即将一个规模为 n n n的问题分解为 k k k个规模较小的子问题,这些子问题互相独立且与原问题相同。

2.2 什么是递归算法与递归函数?

直接或间接地调用自身的算法称为递归算法;用函数自身给出定义的函数称为递归函数。递归函数的二要素:边界条件、递归方程。

2.3 分治与递归的关系是什么?

递归结构是循环结构的一种,也是分治思想应用最多的一种程序结构;但是不一定要使用它,关键在于是否能够写出递归公式以及是否有必要使用递归算法。

2.4 分治法所能解决的问题的一般特征是什么?

(1)该问题的规模缩小到一定程度就可以容易地解决; (2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解; (4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

第三章 动态规划 3.1 动态规划算法与分治法的异同?

动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是:适合于动态规划求解的问题经分解的子问题往往不是相互独立的。若用分治法来解,有些共同部分(子问题或子子问题)被重复计算了很多次。若用动态规划来解,保存已解决的子问题的答案,在需要时再查找,能够避免重复计算。

3.2 设计动态规划算法的步骤是什么?

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

3.3 动态规划的有效性依赖于问题本身的什么性质?

(1)最优子结构; (2)子问题重叠。

3.4 什么是备忘录方法?

(1)用一个表格来保存已解决的子问题的答案,用的时候查表即可; (2)采用的递归方式是自顶向下,动态规划是自底向上; (3)控制结构与直接递归相同,区别在于备忘录方式为每个解过的子问题建立备忘录; (4)初始化为每个子问题的结果存入一个特殊的值,表示并未求解;在求解过程中,查看相应的结果如果是特殊值,表示未求解,否则只要取出该子问题的解即可。

第四章 贪心算法 4.1 什么是贪心算法?

贪心算法(又称贪婪算法),是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的局部最优选择。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择。

4.2 可以用贪心算法求解的问题具有什么性质?

(1)贪心选择性质:所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到; (2)最优子结构性质:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。

第五章 回溯法 5.1 什么是回溯法?

回溯法有“通用解题法”之称。用它可以系统地搜索问题的所有解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。

5.2 什么是剪枝函数?

(1)用约束函数在扩展结点处剪去不满足约束的子树; (2)用限界函数剪去得不到最优解的子树。

5.3 回溯法解题的步骤是什么?

(1)针对所给的问题,定义问题的解空间; (2)确定易于搜索的解空间结构; (3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。

第六章 分支限界法 6.1 分支限界法与回溯法的区别是什么?

分支限界法类似于回溯法,是在问题的解空间树上搜索问题解的算法。一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。

6.2 分支限界法与回溯法的搜索方式有何区别?

回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3