1.贪心的本质
一个贪心算法总是做出当前最好的选择,也就是说,他期望通过局部最优选择从而得到全面最优解决方案。
贪心算法在可以理解为某种意义上的局部最优方案而不是全局最优。而且贪心算法能够做到很多问题的整体最优解或整体最优的近似解。
要注意的问题:
- 没有后悔药,一旦做出选择不可反悔
- 有可能得到的知识最优解的近似解。
- 贪心策略决定算法好坏。
2.贪心算法的使用原则
只要问题满足一下两个性质就可以使用贪心算法来求解。
4. 贪心选择:指原问题的整体最优可以通过一系列局部最优的选择得到。
应用统一规则,将原问题变为一个相似的但规模更小的子问题,而后对每一步都是但当前最佳的选择。
利用贪心策略解决的问题在程序运行过程中无回溯过程。
- 最优子结构:当一个问题的最优解保含其子问题的最优解时,称此问题具有最优子结构性质。
问题的最优子结构性质是该问题是否可用贪心算法求解的关键。
3使用贪心算法的步骤:、
- 贪心策略
首先要确定贪心策略,选择当前看上去最好的一个方案。 - 局部最优解。
根据贪心算法,一步一个得到局部最优解。 - 全局最优解。
把所有的局部最优解合称为原来问题的最优解。
比如从篮子里那苹果,首先选择贪心算法:每次都拿最大的苹果。一步一步得到每个苹果都是每一步骤中最大的即为ai,最后把所有的局部最优解合为一个最优解{a1,a2,…,ai,…}