动态规划算法分析

假设有一个问题描述为:
现有4个物品,小偷背包总容量为8,怎么可以偷得价值最高的物品,
物品信息如下:
物品编号:1 2 3 4
物品重量:2 3 4 5
物品价值:3 4 5 8

动态规划状态转移方程:
F(k,W)表示背包容量为W,K件物品可以偷,所能偷到的最大值
Vk表示第k件物品的价值,Wk表示第k件物品所占有的容量。
状态转移方程:

  1. Wk>W时(第k个物品的重量大于背包重量)
    F(k,W)=F(k-1,w) 第k件物品太重放不下,不偷。
    2.Wk<=W时(第k个物品的重量小于等于背包重量)
    F(k,w)=max{ F(k-1,W), F(k-1,W-Wk)+Vk }
    不偷第k件物品 偷第k件物品

在这里插入图片描述
由上述分析以及状态转移方程可得下表,问题所求即为f(4,8)=12
在这里插入图片描述
下面分析是哪些物品放到了背包里:
从f(4,8)看起,竖着看,f(4,8)上面为f(3,8),由于f(4,8)不等于f(3,8),说明在小偷背包容量不变的情况下,多了一种可以偷取的物品4,这时偷得的价值变化(大)了,因此4号物品一定被偷了。
由于背包总容量为8,4号物品所占容量为5,因此剩下可以偷取的物品的容量为8-5=3。
因此此时看f(3,3)的最大值即可,因为从f(2,3)到f(3,3),f(k,w)的值不变,说明在小偷背包容量不变的情况下,多了一种可以偷取的物品3,这时偷得的价值没有变化,因此3号物品一定没被偷。
这时要再往上看f(1,3)到f(2,3),f(k,w)的值变化,说明在小偷背包容量不变的情况下,多了一种可以偷取的物品2,这时偷得的价值变化(大)了,因此2号物品一定被偷了。
由于背包总容量为8,4号物品四号物品被偷后的背包容量为3,3号物品也被偷走,背包此时容量为0,说明程序执行完成。
通过上述分析,被偷走的物品是4号和2号,总价值是8+4=12.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值