贪心算法原理

设计贪心算法的三个步骤
     将最优化问题转化为这样的形式:对其做出一次选择后,只剩下一个子问题需要求解(比较重要的一步)
    证明作出贪心选择后,原问题总是存在最优解,即贪心选择总是安全的
    证明作出贪心选择后,剩余的子问题满足性质:其最优解与贪心选择组合即可得到原问题的最优解,这样就得到了最优子结构

两个关键因素
1.  贪心选择性质:可以通过做出局部最优(贪心)选择来构造全局最优解;即每个步骤做出贪心选择能生成全局最优解【视不同具体问题进行证明,没有普遍适用的方法】
2.  最优子结构:一个问题的最优解包含其子问题的最优解

经典最优化问题的 两个变形
0-1背包问题:一个正在抢劫的小偷发现了n个商品,第i个商品价值vi美元,重wi磅,vi和wi都是整数;小偷想尽可能拿走价值更多的商品,但是他的背包最多能容纳W磅的商品,W是一个整数【对每个商品,不能拿走一部分,要么完整拿走,要么留下)
分数背包问题:条件和0-1背包问题一样,但对每个商品,小偷可以拿走一部分

两个问题都有最优子结构,很相似,但是
贪心算法可以求解分数背包问题,而不能求解0-1背包问题
    分数背包问题:计算每个商品的每磅价值vi/wi,每次选择每磅价值最高的商品即可
    0-1背包问题:因为小偷无法装满背包,空闲空间降低了方案的有效每磅价值;当我们考虑一个商品食肉装入背包,需要比较包含此商品的子问题的解和不包含它的子问题的解,然后才能做出选择

当然,由于两个问题都有最优子结构,所以能用动态规划算法进行求解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值