算法设计与分析考点总结

选择

填空:

1)算法设计应满足的几个目标:

正确性、可使用性、可读性、健壮性、高效率与低存储量需求

2)算法具有5个重要特性:

有限性、确定性、可行性、输入性、输出性

3)STL概述:由容器、算法、迭代器三部分组成

map/multimap按key的升序排列,红黑树的形式存储查找时间O(log2n)

4)堆采用STL的优先队列来实现优先级通过数据元素的关系函数确定

5)递归是指在函数的定义中又调用函数自身的方法

6)分治法的求解过程:分解成若干个子问题->求解子问题->合并子问题

7)用贪心法求解问题应具有的性质:贪心选择性质最优子结构性质

8)一个复杂问题的解决方案是由若干个小的决策步骤组成的决策序列,所以一个问题的解可以表示成解向量(一维向量的形式)

9)回溯为了防止无效搜索,通过约束函数剪去不满足约束函数的路径,二是用界限函数剪去得不到问题解或最优解的路径,这两个函数统称为剪枝函数

10)狭义回溯法=DFS+剪枝,广义:带回退的为回溯法

简答题:

时间复杂度推导如P13、p79

1)回溯法和深度优先遍历的区别:

访问次数不同、访问次序不同、后者不含剪枝

2)回溯法和分枝限界法的区别:

前者深度优先,后者广度优先

前者用栈存储,后者用队列

前者为每个都遍历到,后者只有一次遍历机会

前者为满足条件的所有解,后者为最优解或某个解

递归问题解决应满足以下三点:

①需要解决的问题可以转化为一个或多个子问题来解决,而这些子问题的求解方法与原问题完全相同,只是在数量规模上不同。

②递归调用的次数必须是有限的。

③必须有结束递归的条件来终止

分治法能解决的问题一般具有以下特征:

①该问题的规模缩小到一定程度就可以容易地解决

②该问题可以分解为若干个规模较小的相似问题

③利用该问题分解出的 子问题的解可以合并为该问题的解

④该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题

p212

p213

动态规划求解的基本性质:

①最优性原理

②无后效性

③有重叠子问题

P290

分析题:

p239

编程题

P10、P39、p41、p45、p80、p116、p207、p246、p279、p322

你可能感兴趣的:(经验分享)