山东建筑大学-算法分析与设计期末复习——简答题内容
- 什么是渐进效率,渐进效率的意义是什么
渐进效率是指当问题的规模充分大时,算法的复杂性.
渐进效率的意义是通过比较算法之间的复杂度,更好的设计和比较算法,使得算法更容易得到改进,提高算法效率。 - 大哦,欧米茄,西塔有什么意义,分别表示了什么
(1)大O表示算法的渐进上界,上界的阶越低,则评估越精确,结果就越有价值。
(2)欧米茄表示算法的渐进下界,这个下界的阶越高,则评估越精确,结果就越有价值。该渐进符号一般用于描述算法的最优复杂度
(3)θ用于界定函数的渐进上界和渐进下界。θ渐进符号是最严格的一个,因为它既描述了函数的上界,又描述了函数的下界。 - 时间复杂度的最坏、最好、平均分别指的什么,什么时候用,一般情况下用哪种复杂度来衡量
(1)最坏时间复杂度:在最糟糕的情况下,执行这段代码的时间复杂度。比如在数组中查找不存在的变量x,需要将整个数组遍历一遍。
(2)最好时间复杂度:在最理想的情况下,执行这段代码的时间复杂度。比如要查找的变量x正好是数组的第一个元素。
(3)平均时间复杂度:指所有可能输入实例均以等概率出现的情况下,该算法的运行时间。
(4)一般情况下用最坏时间复杂度来讨论算法的时间复杂度,因为最坏情况下的时间复杂度是算法在任何输入实例上运行时间的界限,这样就保证了算法的运行时间不会比最坏情况更长。 - 分治法、动态规划、贪心算法、回溯法、分支限界法的基本思想是什么
(1)递归的基本思想:直接或间接地调用自身的算法。
(2)分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。
(3)贪心算法的基本思想:贪心算法首先设计某种贪心选择策略,第一步做出当前状态的最优选择;然后问题会被演化为与原问题相同但规模更小的子问题,最后用相同的贪心选择策略求解子问题。
(补充)贪心算法的基本要素包括贪心选择性质和最优子结构性质。
(3.1)贪心选择性质:指所求问题的整体最优解可以通过一系列局部最优解来达到。
(3.2)最优子结构性质:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。
(4)回溯法的基本思想:
(4.1)针对所给问题,定义问题的解空间
(4.2)确定易于搜索的解空间结构
(4.3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
(5)分支限界法的基本思想是什么:
(5.1)求解目标:分支限界法的求解目标是找出满足约束条件的最优解。
(5.2)搜索方式:分支限界法常以广度优先或以最小耗费、最大效益优先的方式搜索解空间树。
(5.3)在分支限界法中,每个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生所有儿子结点。在这些儿子结点中,导致不可行或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。
(5.4)此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时停止。 - 算法之间对比题:动态规划和贪心算法的特点分别是什么,有什么相同和不同之处,有什么区别,优势和劣势是什么
(5.1)动态规划应用于子问题重合的情况,将待求解问题分解成若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解。
(5.2)贪心算法的特点是总是做出当前看来是最好的选择,并不从整体最优上加以考虑,所做的选择只是在某种意义上的局部最优选择。
相同之处:
1.都是分解成子问题来求解,都需要具有最优子结构。
2.所有的贪心问题都可以用动态规划来求解,贪心算法是动态规划的特例。
区别:
1.贪心算法:每一步的最优解一定包含上一步的最优解。
动态规划:全局最优解中一定包含某个局部最优解。
2.贪心算法通常以自顶向下的方式解各子问题。
动态规划通常以自底向上的方式解各子问题。
3.贪心算法不能保证求得的最后解是最佳的,一般复杂度低。
动态规划本质是穷举法,可以保证结果是最佳的,复杂度高。
优势和劣势:
贪心算法:
优势:算法复杂度低
劣势:不能保证求得的最后解是最佳的
动态规划:
优势:可以保证结果是最佳的
劣势:本质是穷举法,复杂度高。 - 回溯法和分支限界法通过解空间树来找问题的最优解,它们的相同和不同之处是什么、效率上有什么不同,算法效率的关键点是什么
相同之处:都是在问题的解空间上搜索问题的算法。
不同之处:
1.求解目标不同:
回溯法的求解目标是找出解空间中满足约束条件的所有解,而分支限界法的求解目标是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。
2.搜索方式不同:
回溯法以深度优先的方式搜索解空间,分支限界法则以广度优先或最小耗费优先的方式搜索解空间。
3.对扩展结点的扩展方式不同:
回溯法沿着当前扩展结点的子结点扩展下去。
分支限界法一次性产生当前扩展结点的所有儿子结点。
4.存储空间的要求不同:
分支限界法的存储空间比回溯法大得多,因此当内存容量有限时,回溯法成功的可能性更大。
算法效率的关键点:
在搜索时,绝大部分需要用到剪枝,剪枝策略就是寻找过滤条件,提前减少不必要的搜索路径。 - 深度优先遍历的基本思想是什么,广度优先遍历的基本思想是什么。
深度优先遍历的思想是:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点。
广度优先遍历的思想是:每次都在访问完当前结点后访问当前结点的所有儿子结点。