【算法刷题】-贪心-概念

196 阅读2分钟

这是我参与更文挑战的第8天,活动详情查看:更文挑战

贪心

贪心法在解决问题的策略上一般只根据当前已有的信息就做出选择,而且一旦做出了选择,这个选择都不会改变。换言之,贪心法并不是从整体最优考虑,它所做出的选择只是在某种意义上的局部最优。

这种局部最优选择并不总能获得整体最优解Optimal Solution,但通常能获得近似最优解(Near-Optimal Solution)。如果一个问题的最优解只能用蛮力法穷举得到,则贪心法不失为寻找问题近似最优解的一个较好办法。

问题特征

最优子结构性质

当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质,也称此问题满足最优性原理。

贪心选择性质

所谓贪心选择性质是指问题的整体最优解可以通过一系列局部最优的选择,即通过贪心选择得到。

贪心选择性质证明

对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所做的贪心选择最终导致问题的整体最优解。

通常先考察问题的一个整体最优解,并证明可修改这个最优解,使其从贪心选择开始。做出贪心选择后,原问题简化为规模较小的类似子问题,然后,用数学归纳法证明,通过每一步的贪心选择,最终可得到问题的整体最优解。

贪心法设计的关键

能获得问题最优解的贪心选择策略

个人思考:

所实话,贪心的概念我一直感觉很难理解,因为它的理论干实在是太强了,而我在做题的时候根本想不到,去找一个什么最优解,去设计一个方法,说实话我真的做不到。这个时候,其实我们就应该抛弃理论,因为想要理解一个理论实在太麻烦了,不如直接上手代码,在实践中寻找规律。