动态规划-背包问题

背包问题是一个经典的优化问题,目标是最大化装入背包的物品总价值。通过动态规划可以解决,关键在于构建递推公式F(i,j),表示前i个物品在限重j下的最大价值。算法分为两种情况:包含第i个物品和不包含,然后自底向上填充表格求解。
摘要由CSDN通过智能技术生成

问题

给定 _n _种物品和一个承重量为 _W _的背包,物品 _i _的重量是 wi,其价值为 vi,背包问题是如何选择装入背包的物品,使得装入背包中物品的总价值最大?
image.png

思路

关键在于推导出一个递推公式,用较小子实例的解的形式表示背包问题的实例的解。
设 F(i, j) 表示该实例的最优解的物品总价值,也即是限重为 j 时,背包中前 i 个物品中最大总价值。

把前 _i _个物品放进承重为 _j _的背包中的子集分为两类:包括第 i 件物品的子集和不包括第 i 件物品的子集。则
(1)不包括第 i 件物品的子集中,最优子集的价值是F(i-1, j);
(2)包括第 i 件物品的子集中,最优子集是由该物品和前 i-1 个物品能够放进 j-_wi _的背包的最优子集组成,此时总价值为_vi _+F(i-1, j-wi)
image.png

动态规划算法求解:自底向上填表
image.png
填表既可以逐行填,也可以逐列填。

image.png
image.png
image.png

image.png
V@%~@N)TTE31UL_(2J3)(_L.jpgTTE31UL_(2J3)(_L.jpg&originHeight=4032&originWidth=3024&originalType=binary&ratio=1&rotation=0&showTitle=false&size=3559916&status=done&style=none&taskId=u34452c70-f065-4149-9e9c-7c3b73e1444&title=&width=2419.2)
image.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值