温馨提示:
完整笔记已设置成专栏,欢迎各位点击右上角“订阅专栏”,收藏完整笔记。
一、分治法
1、基本思想
一般来说,分治算法在每一层递归上都有 3 个步骤
(1) 分解。将原问题分解成一系列子问题。
(2) 求解。递归地求解各子问题。若子问题足够小,则直接求解。
(3) 合并。将子问题的解合并成原问题的解。
二、动态规划法
动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。
动态规划算法通常用于求解具有某种最优性质的问题。
三、贪心法
从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一 步都要确保能获得局部最优解。每一步只考虑一 个数据,其选取应该满足局部优化的条件。若下 一个数据和部分最优解连在一起不再是可行解时, 就不把该数据添加到部分解中,直到把所有数据枚举完,或者不能再添加算法停止。
贪心算法在某种意义上具有局部最优解,但并不是对所有问题都能得到整体最优解,关键是贪心策略的选择。
四、回溯法
在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。
五、分支限界法
分支限界法常以广度优先方式搜索解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展节点,活结点一旦成为扩展节点,就会一次性产生其所有儿子节点。在这些儿子节点中,导致不可行解或导致非最优解的儿子节点会被舍弃,其余儿子节点会被加入活结点表中。
为了有效的选择下一个扩展节点加速搜索,可在每一个活结点处计算一个函数值(限界),并根据计算的函数值结果从当前活结点表中选择下一个最有利的结点作为当前扩展结点,重复上述节点扩展过程,使搜索朝着解空间树上最优解的分支推进,直到找到所需的最优解或者活结点表为空。
六、总 结
笔记总结不易,如果喜欢,请关注、点赞、收藏。
完整笔记下载地址:(后续完成后更新)
基础精讲课件地址:(请关注、点赞、收藏后,私信我)
基础精讲视频地址:(请私信我)