Greedy Algorithm
介绍
贪心算法有很多经典应用,如霍夫曼编码(Huffman Coding)、Prim 和 Kruskal 最小生成树算法、Dijkstra 单源最短路径算法。
贪心算法思想:
针对一组数据,我们定义了限制值和期望值,希望从中选出几个数据,在满足限制值的情况下,期望值最大。
当前情况下,每次选择在消耗同等限制值的情况下,对期望值贡献最大的数据;或者说对期望值贡献同等的情况下,消耗的限制值尽量少。
举几个例子看下贪心算法产生的结果是否是最优的。严格证明贪心算法的正确性是非常复杂的。
用贪心算法解决问题的思路,并不总能给出最优解。尤其在前面的选择会影响后面的选择的情况下。
案例
背包问题
问题:一个背包可以容纳 100kg,有五种豆子,背包中应该装哪些豆子,每种豆子装多少,可以使背包中总价值最大。
物品 | 总量(kg) | 总价值(元) |
黄豆 | 100 | 100 |
绿豆 | 30 | 90 |
红豆 | 60 | 120 |
黑豆 | 20 | 80 |
青豆 | 50 | 75 |
Last updated