![09c7c4173789202a3339e7cca0a71161.png](https://i-blog.csdnimg.cn/blog_migrate/53f6abc8ccb687bbeef300cf9edb34c1.jpeg)
公元2020年5月5日,距离算法考试仅剩4天。
一、知识归纳
1.设计思想
- 只根据当前已有的信息就做出选择,而且一旦做出了选择,将来无论如何都不能更改
- 不从整体最优考虑,所做的选择只是在某种意义上的局部最优
- 这种选择并不总能获得整体最优解(Optimal Solution),但通常能获得近似最优解(Near-Optimal Solution)
动态规划法通常以自底向上的方式求解各个子问题。
贪心法则通常以自顶向下的方式做出一系列的贪心选择。
2.示例
【找钱问题】假设有面值为5元、2元、1元、5角、2角、1角的货币,需要找给顾客4元6角现金,使付出的货币的数量最少。
【思路】
- 首先选出1张面值不超过4元6角的最大面值的货币,即2元,再选出1张面值不超过2元6角的最大面值的货币,即2元,再选出1张面值不超过6角的最大面值的货币,即5角,再选出1张面值不超过1角的最大面值的货币,即1角,总共付出4张货币。
- 在付款问题每一步的贪心选择中,在不超过应付款金额的条件下,只选择面值最大的货币,而不去考虑在后面看来这种选择是否合理,而且它还不会改变决定:一旦选出了一张货币,就永远选定。
- 贪心选择策略是尽可能使付出的货币最快地满足支付要求,其目的是使付出的货币张数最慢地增加
3.基本要素
(1) 最优量度标准(正确的贪心策略,贪心选择性质)
- 贪心法求解问题的核心问题
- 根据该量度标准,实行多步决策进行求解
- 在该量度意义下,每步的贪心选择是局部最优的
- 得到全局最优解
(2) 求解的问题有最优子结构性质(最优性原理)
- 一个问题的最优解包含其子问题的最优解
注:贪心算法的基本要素是贪心选择性质和最优