贪心算法总结及实例简介

来源:互联网 发布:服装et软件下载 编辑:程序博客网 时间:2024/05/01 21:59

基本思想:

1. 求解最优化问题的算法包含一系列步骤。

2. 每一步都有一组选择。

3. 作出当前看来最好的选择。

4. 希望通过作出局部优化选择达到全局优化选择。

5. 贪心算法不一定总产生优化解。

6. 贪心算法是否产生优化解需严格证明。

贪心算法产生优化解的条件:

1.贪心选择性:若一个优化问题的全局优化解可以通过局部优化选择得到。

2. 优化子结构

贪心问题的解决步骤:

1. 分析问题的最优子结构。

2. 设计出一个递归解。

3. 证明在递归阶段的任一选择,最优选择之一总是贪心选择。那么,做贪心选择总是安全的。

4. 证明通过贪心选择,所有子问题(除一个以外)都为空。

5. 设计出一个实现贪心策略的递归算法。

6. 将递归算法转换成迭代算法。

优化解决步骤:

1.将优化问题转化成这样的一个问题,即先做出选择,再解决剩下的一个子问题。

2. 证明原问题总是有一个最优解是做贪心选择得到的,从而说明贪心选择的安全。

3. 说明在做出贪心选择后,剩余的子问题具有这样的一个性质。即如果将子问题的最优解和我们所作的贪心选择联合起来,可以得出原问题的一个最优解。

哈夫曼编码问题:每次选取最小的两个节点构造哈夫曼树,并将其和作为新节点加入到节点集合中,重复以上步骤,这也是通过局部贪心选择获得全局最优解的情况。

部分背包问题:不同于0-1背包问题,可以取物品的一部分,所以0-1背包问题的每一个物品想象成一个金锭,部分背包问题中的一件物品则更像金粉。部分背包问题通过计算每件物品的单位重量价值来比较选择优先物品。这就是每次进行贪心选择,构造全局最优解,而0-1背包问题之所以不能使用贪心算法,再与局部贪心算法不能使得背包被恰好填满,所以不能保证全局最优。

1 0
原创粉丝点击