贪心策略的基本内容和背包问题

 

心策略的基本内容

 

 

 

一、贪心算法的构造步骤

a) 将优化问题转化为这样一个问题:即先做出选择,在解决剩下的一个子问题。

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

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

 

二、贪心选择的关键特点

a) 一个全局最优解可以通过局部最优(贪心)的选择来得到。

b) 和动态规划的不同:动态规划每一步都要做出选择,并且这些选择依赖于子问题的解。所以动态规划一般是自底向上的。

 

三、最优子结构

一个问题的最优解包含了子问题的最优解。

评价动态规划以及贪心算法可应用性进行评估的关键一点。

 

四、贪心算法和动态规划的区别:

0-1 背包问题 和 部分背包问题

 

0-1背包

最优子结构

假设有个方案使得背包负重范围内的价值最高,那么从背包中拿掉某样物品,并将负重减掉该物品的重量。包中剩余的物品在背包剩余的负重中包含的物品价值依然是最高。

一个递归解

设重量为W的物品,对于集合S={S1,S2 ... Sn},最大的价值为,物品j的价值为,重量为

有:

 = {

max{ + }   (W<= W)

(S只包含一个元素Sj,并且W < wj 时,

                       或者W=0,或者W < )

 

 

  (S只包含一个元素Sj,并且W >= wj 时)

 

 

 

递归实现:

 

 

动态规划实现:

感觉这个问题子问题的解的可复用不高,怎么考虑都要M*N2 的运行时间,不知如何实现O(N W) 的运行时间

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值