算法期末复习——简述题

✔动态规划算法的主要步骤
①找出最优解的性质,刻画其结构特征
②递归地定义最优值
③以自底向上的方式计算出最优值
④根据计算最优值得到的信息构造最优解

✔描述分治法的基本思想
将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同:对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,递归进行下去直到问题规模足够小。将求出的小规模的问题的解合并为一个更大规模的问题的解,逐步求出原来的问题

✔回溯法与分支限界法的差异
求解目标不同:一般而言,回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标是尽快地找出满足约束条件的一个解
搜索方法不同:回溯法采用深度优先方法搜索空间,而分支限界法一般采用广度优先或以最小耗费优先的方式搜索解空间

✔比较分治法与动态规划
相同:二者都要求原问题具有最优子结构性质,分解成若干个规模较小的子问题。
不同:分治法常利用递归求解,并且子问题是互相独立的;而动态规划通常是以自底向上的方式求解,并且子问题之间有重叠

✔贪心算法的两个性质
贪心选择性质:可以通过局部最优选择来构造全局最优解,即每个步骤做出贪心选择能生成全局最优解
最优子结构:一个问题的最优解包含其子问题的最优解

✔描述回溯法的基本思想
回溯法是在一棵含有问题全部可能解的状态空间树上进行深度优先搜索。搜索过程中每到达一个结点时,则判断该结点为根的子树是否含有问题的解,如果可以确定该子树中不含有问题的解,则放弃对该子树的搜索,退回到上层父结点,继续下一步深度优先搜索的过程。

✔描述分支限界的基本思想
分支限界法常以广度优先或以最小耗费优先的方式搜索问题的解空间树。在分支限界中,每一个活结点只有一次机会会成为扩展结点。活结点一旦称为扩展结点,机会一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被设其,其余儿子结点被加入活结点表中。此后从活结点表中取下一结点成为当前扩展结点,重复上述过程,直到找到所需的解或活结点表为空时为止。

✔陈述算法在最坏情况下的时间复杂度和平均时间复杂度;这两种评估算法复杂性的方法各自有什么实际意义
最坏情况下的时间复杂度称最坏时间复杂度。最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比其更长。平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。在输入不同的情况下算法的运行时间可能会发生变化,平均时间复杂度给出了算法的期望运行时间,有助于算法好坏的评价以及在不同算法之间比较时有一个统一标准

你可能感兴趣的:(算法,算法)