每日总结
分治法
将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并,得到原问题的解
使用条件
(1)缩小规模可以解决
(2)具有最优子结构性质
(3)子问题解可以合并
(4)子问题相互独立
二分搜索法,合并排序,快排,循环日程比赛
贪心策略
1.最优化问题
求一个问题的可行解(符合条件的解决方案)和最优解(使优化函数取得最佳值的可行解,可以是多个)的问题
2.贪心法采用逐步构造最优解的方法向给定的目标前进
3.在每个局部阶段,都做出一个看上去最优的决策(即某种意义下的、或某个标准下的局部最优解),并期望通过每次所做的局部最优选择产生出一个全局最优解。
4.做出贪心决策的依据称为贪心准则(策略)
5.贪心算法不能对所有问题都得到整体最优解,它所作出的选择只是在某种意义上的局部最优选择,贪心法一般需要对原始数据预处理(排序)
6.最优化度量的选择是贪心算法的关键
7.最优子结构
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质(动态规划、贪心的关键)
8.贪心算法通常以自顶向下的方式进行,是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解
9.一般可以通过对算法步数的归纳或通过对问题规模的归纳来证明贪心法的正确性
动态规划
1.动态规划是用来解决多阶段决策过程最优化的一种数量方法
2.多阶段决策问题
是动态决策问题的一种特殊形式,每个阶段都要进行决策
3.动态规划方法的关键
基本的递推关系式和恰当的边界条件(简称基本方程)
4.最优化原理
一个最优策略的子策略也是最优的
5.最优子结构
问题的最优解包含着其子问题的最优解
同一个问题可以有多种方式刻划它的最优子结构,有些表示方法的求解速度更快
6.子问题的重叠性质
递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次
7.动态规划基本步骤
找出最优解的性质,并刻划其结构特征。
递归地定义最优值。
以自底向上的方式计算出最优值。
根据计算最优值时得到的信息,构造最优解。
回溯法
1.回溯和分枝限界法是比较常用的对候选解进行系统检查两种方法.通常能够用来求解规模很大的问题
具有限界函数的深度优先生成法称为回溯法
2.结点
- 扩展结点(E-结点,Expansion Node)
一个正在产生儿子的结点称为扩展结点 - 活结点(L-结点,Live Node)
一个自身已生成但其儿子还没有全部生成的节点称做活结点 - 死结点(D-结点,Dead Node)
一个所有儿子已经产生的结点称做死结点
3. 解空间
对于问题的一个实例,解向量满足显式约束条件的所有多元组,至少包含问题的一个(最优)解同一问题可有多种表示
4.基本步骤
(1)针对所给问题,定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。