贪心算法

来源:互联网 发布:网络安全教育心得体会 编辑:程序博客网 时间:2024/05/16 05:15

贪心算法的基本思想:

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

------每一部都有一组选择

------做出当前看来最好的选择

------希望通过做出局部优化选择达到全局优化选择

------贪心算法不一定总产生优化解

------贪心算法是否产生优化解,需要严格证明


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

------贪心选择性:若一个优化问题的全局优化解可以通过局部优化选择得到,则该问题成为具有贪心选择性

------优化子结构


与动态规划方法的比较

------动态规划方法可用的条件:(1)优化子结构(2)子问题重叠性(3)子问题空间小

------贪心法可用的条件:(1)优化子结构(2)贪心选择性


举例:

(1)最优装载问题。给出n个物体,第i个物体重量为wi.选择尽量多的物体,使得总重量不超过C。

分析:由于只关心物体的数量,所以装重的没有装轻的合算。只需把所有物体按重量从小到大排序,一次选择每个物体,直到装不下为止。这是一种典型的贪心算法,它只顾眼前,但能得到最优解。

(2)部分背包问题。有n个物体,第i个物体的重量为wi,价值为vi,在总重量不超过C的情况下让总价值尽量高。每一个物体都可以只取走一部分,价值和重量按比例计算。

分析:本题在上一题的基础上增加了价值,所以不能简单地像上一题那样先拿轻的,因为轻的可能价值也小,也不能先拿价值大的,可能它特别重,而应该综合考虑两个因素。一种直观的贪心策略是:优先拿“价值除以重量的值”最大的,直到重量和正好为C。




0 0
原创粉丝点击