📜  贪婪算法简介(1)

📅  最后修改于: 2023-12-03 15:12:13.589000             🧑  作者: Mango

贪婪算法简介

贪心算法(Greedy Algorithm),又称贪婪算法、贪心法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望全局结果是最好或最优的算法。

思路

贪心算法常见的思路是:从问题的某一个初始解出发逐步地进行,根据某种优化策略,每次尽可能地寻找局部最优解,最终得到全局最优解。

示例

下面用一个示例来说明贪心算法的思路:

假设现在有一个人需要购买尽可能多的物品,但是他的背包最多只能装下10kg的东西。有如下物品:

| 物品 | 重量(kg) | 价格(元) | | --- | --- | --- | | A | 2 | 4 | | B | 3 | 5 | | C | 4 | 6 | | D | 5 | 10 | | E | 9 | 18 |

那么如何才能使这个人花最少的钱买到最多的物品呢?

我们可以按照如下贪心策略:

  1. 按照每一件物品的单价(即价格÷重量),从高到低排序;
  2. 按从高到低的顺序依次将物品放入背包,直到背包的容量达到10kg为止。

按照贪心策略,我们得到了最优解:选出物品A、B、C和D,总共重量为14kg,总共价格为25元。而如果选择其他的策略,比如按照重量从小到大排序,或者按照价格从低到高排序,都无法得到最优解。

优缺点

贪心算法的优点是:简单易懂、易于编程实现,对于一些组合优化问题可以高效地求出最优解。

其缺点则是:不能保证全局最优解,有时候只能得到局部最优解;在求解某些问题时,贪心策略不一定是最优的,需要通过对问题进行分析,确认贪心策略的正确性。

参考资料
  1. 维基百科-贪心算法
  2. 图解算法-贪心算法
  3. 菜鸟教程-贪心算法简介