趣学算法系列-贪心算法
声明:本系列为趣学算法一书学习总结内容,在此推荐大家看这本算法书籍作为算法入门,
原作者博客链接,本书暂无免费电子版资源,请大家支持正版,更多的案例分析请查看原书内容。
第二章 贪心算法
一个贪心算法总是做出当前最好的选择,也就是说,它期望通过局部最优选择
从而得到全局最优的解决方案。
—《算法导论》
- 贪心算法求解两个重要的特性
(1)贪心选择 每一步都作出当前的最佳(何为最佳,策略不同,情况不同)选择 仅依赖于之前作出的选择
(2)最优子结构 问题的最优解包含其子问题的最优解
- 贪心算法秘籍
(1)贪心策略 选择当前看上去最好的一个方案 如最大的 最值钱的 最重的
(2)局部最优解 根据贪心策略,一步一步地得到局部最优解
(3)全局最优解 所有的局部最优解合成为原来问题的一个最优解
- 如何定义最优子结构
分解问题模型 缩小问题的规模
最优解子问题的分解结构和堆叠方式
分解结构:每一步都在前一步的基础上选择当前最好的解(钱币找零问题)
堆叠结构:分解成相对独立的几个子问题,最后进行合并(某种公式计算法则)
- 贪心算法的缺陷
贪婪法每一步选择完之后,局部最优解就确定
不再进行回溯,之前选择不再修改,直到算法结束
贪心只有极少情况可以得到最优解
通常得到的是近似最优解,但是简单高效
省去了为找最优解可能需要的穷举操作
- 贪心算法的典型应用
最优装载问题
背包问题