考点归纳
第一章 基础知识
Ø
算法定义:算法是
问题求解的有效策略
.
是解某一特定问题的一组有穷规则的集合。
Ø
算法特征 :
有限性、确定性、输入、输出、能行性
Ø
算法复杂性:算法运行所需要的计算机资源的量
时间复杂性:需要时间资源的量
空间复杂性:需要空间资源的量
第二章 递归
Ø
1
、递归的概念
Ø
一个递归模型是由
递归边界
和
递归体
两部分组成
,
前者确定递归到何时结束
,
后者确定递归求解时的递推关系
。
Ø
2
、递归算法的设计方法
Ø
典型例子:阶乘、汉诺塔、费布那切数列等
Ø
3
、递归算法的执行过程
Ø
4
、递归算法的效率分析
Ø
解递归方程
第三章 分治法
1 分治算法基本思想
(1)划分(divide)
(2) 解决(conquer)
(3) 合并(combine)
分治法所能解决的问题一般具有以下几个特征:
该问题的规模缩小到一定的程度就可以容易地解决;
该问题可以分解为若干个规模较小的相同问题,即该问题具有
最优子结构性质
利用该问题分解出的子问题的解可以合并为该问题的解;
该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
2
典型实例
折半
查找
合并
排序
快速
排序
找最大值和最小值
第三章 贪心策略
最优化问题数学模型描述:
目标函数、约束条件、可行解、最优解
贪心算法的设计要素:
最优子结构性质
贪心选择性质
贪心法的正确性问题
贪心算法应用实例
活动安排问题
背包
问题
最优
装载问题
最小生成树、最短路径、哈夫曼编码
第四章 动态规划
动态规划方法的关键在于正确地写出基本的递推关系式和恰当的边界条件
。
动态规划算法的基本要素
最优子结构
重叠子问题
备忘录方法
动态规划基本步骤
找出最优解的性质,并刻划其结构特征。
递归地定义最优值。
以自底向上的方式计算出最优值。
根据计算最优值时得到的信息,构造最优解。
动态规划应用实例
多段
图最短路径
数字三角形
0-1
背包
投资
分配
回溯法
•
回溯法在问题的
解空间树
中,按
深度优先
策略,从
根结点
出发搜索解空间树。
回溯法的基本步骤
(1)
针对所给问题,
定义
问题的
解空间
;
(2)
确定
易于搜索的
解空间结构
;
(3)
以
深度优先
方式
搜索解空间
,并在搜索过程中用
剪枝函数
避免无效搜索。
常用剪枝函数
用
约束函数
在
扩展结点
处剪去
不满足约束
的子树;
用
限界函数
剪去
得不到最优解
的子树。
解空间树
子集树通常有
2
n
个叶结点,结点总数为
2
n+1
-1
。需
Ω(2
n
)
计算时间。
排列树通常有
n!
个叶结点。因此遍历排列树需要
Ω(n!)
计算时间。
满
m
叉树通常有
m
n
个叶结点,需
Ω(
m
n
)
计算时间。
回溯法应用实例
0-1
背包问题
装载问题
旅行
商
问题
N
皇后问题
图的
M
着色问题
分支限界法
分类(根据活结点表的维护方式)
队列式分支限界法
优先队列式分支限界法
¡
分支限界法的一般解题步骤为:
定义问题的解空间
确定问题的解空间组织结构(树或图)
搜索解空间。搜索前要定义判断标准(约束函数或限界函数),如果选用优先队列式分支限界法,则必须确定优先级。
分支限界法应用实例
0-1
背包问题
旅行
商
问题
布线问题