贪心算法介绍
- [一. 什么是贪心算法?](#一. 什么是贪心算法?)
- [二. 贪心算法的特点](#二. 贪心算法的特点)
- [三. 如何学习贪心?](#三. 如何学习贪心?)
一. 什么是贪心算法?
-
贪心算法,或者说是贪心策略:企图用局部最优找出全局最优。
-
把解决问题的过程分成若干步;
-
解决每一步时,都选择"当前看起来最优的"解法;
-
"希望"得到全局的最优解。
二. 贪心算法的特点
对于大多数题目,贪心策略的提出并不是很难,难的是证明它是正确的。因为贪心算法相较于暴力枚举,每一步并不是把所有情况都考虑进去,而是只考虑当前看起来最优的情况。但是,局部最优并不等于全局最优,所以我们必须能严谨的证明我们的贪心策略是正确的
一般证明策略有:反证法,数学归纳法,交换论证法等。
当问题的场景不同时,贪心的策略也会不同。因此,贪心策略的提出是没有固定的套路和模板的。我们后面讲的题目虽然分类,但是大家会发现具体的策略还是相差很大。
因此,不要妄想做几道贪心题目就能遇到一个会一个。有可能做完 50 道贪心题目之后,第 51 道还是没有任何思路。
三. 如何学习贪心?
先有一个认知:做了几十道贪心的题目,遇到一个新的又没有思路,这时很正常的现象,把心态放平。
-
前期学习的时候,重点放在各种各样的策略上,把各种策略当成经验来吸收;
-
在平常学习的时候,我们尽可能的证明一下这个贪心策略是否正确,这样有利于培养我们严谨的思维。但是在比赛中,能想出来一个策略就已经不错了,如果再花费大量的时间去证明,有点得不偿失。这个时候,如果根据贪心策略想出来的若干个边界情况都能过的话,就可以尝试去写代码了