求解释01背包问题
一个旅行者有一个最多能用M公斤的背包,现在有N件物品,第i件重量Wi,价值Pi.若每种物品只有一件求旅行者能获得最大总价值fori=1...NforV=V...0f[v]...
一个旅行者有一个最多能用M公斤的背包,现在有N件物品,
第i件重量Wi,
价值Pi.
若每种物品只有一件 求旅行者能获得最大总价值
for i=1...N
for V=V...0
f[v]=max{f[v],f[v-w[i]]+p[i]}
为什么V要递减 这个方程是什么意思?
求详细解释!谢谢! 展开
第i件重量Wi,
价值Pi.
若每种物品只有一件 求旅行者能获得最大总价值
for i=1...N
for V=V...0
f[v]=max{f[v],f[v-w[i]]+p[i]}
为什么V要递减 这个方程是什么意思?
求详细解释!谢谢! 展开
2个回答
展开全部
这个是状态转移方程
f[v] 表示背包剩余容量V时候积累的价值总和
你这个是优化版本的只用了一维数组 有个更基本的方法我解释给你听
有n件物品 假设当前到第i件了
{ f[i - 1][v];
f[i][v](到第i件时 此时容量为v ) = {
{ f[i - 1][v - w[i]] + p[i];(v>=w[i])
(两者中较大的那个)
“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”,价值为f[i-1][v];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c[i]的背包中”,此时能获得的最大价值就是f[i-1][v-c[i]]再加上通过放入第i件物品获得的价值w[i]。
f[v] 表示背包剩余容量V时候积累的价值总和
你这个是优化版本的只用了一维数组 有个更基本的方法我解释给你听
有n件物品 假设当前到第i件了
{ f[i - 1][v];
f[i][v](到第i件时 此时容量为v ) = {
{ f[i - 1][v - w[i]] + p[i];(v>=w[i])
(两者中较大的那个)
“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”,价值为f[i-1][v];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c[i]的背包中”,此时能获得的最大价值就是f[i-1][v-c[i]]再加上通过放入第i件物品获得的价值w[i]。
参考资料: 背包九讲
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询