贪心算法总是做出当前最好的选择,也就是说,它期望通过局部最优选择从而得到全局最优的解决方案------------《算法导论》
从问题的初始解开始,一步一步地做出当前最好的选择,逐步逼近问题的目标,尽可能地得到最优解,即使达不到最优解,也可以得到最优解的近似解
我们需要注意一下几个问题
- 一旦做出选择,不可以后悔
- 又可能得到的不是最优解,而是最优解的近似解
- 选择什么样的贪心策略,直接决定算法的好坏
什么样的问题可以使用贪心算法
- 具有贪心选择性质
- 原问题的整体最优解可以通过一系列的局部最优的选择得到
- 将原问题变为一个相似的但规模跟小的子问题
- 每一步都是当前最佳的选择
- 运行过程无回溯过程 - 具有最优子结构
- 当一个问题的最优解包含其子问题的最优解
贪心算法秘籍
- 贪心策略
首先确定贪心策略,选择当前看上去最好的一个方案。例如:挑选苹果,如果你认为个大的是最好的,那你每次都从苹果堆中拿一个最大的;如果你认为最红的是最好的,那你每次都从苹果堆中拿一个最红的。因此根据求解的目标不同,贪心策略也会不同 - 局部最优解
根据贪心策略,一步一步得到局部最优解,例如,第一次挑选一个最大的苹果,第二次再从剩下的苹果堆中选择一个最大的。。。。以此类推 - 全局最优解
把所有的局部最优解合成原来问题的一个最优解