0/1背包问题 - 以 动态规划算法 去解
2017-06-18 21:16
204 查看
0/1背包问题 - 以 动态规划算法 去解
flyfish
0/1背包问题(0/1 knapsack problem)
我们有n种物品,编号是 0,1,2,3…,n-1,物品i的重量(weight)为wi,价值(value) 为vi。
我们假定所有物品的重量和价格都是非负的。
背包所能承受的最大重量(maximum weight capacity)为C。
限定每种物品只能选择0个或1个。
目的是得到动态规划的状态转移方程
物品个数n为4
承受的最大重量C=10
重量分别是 3, 5, 4, 2 (编号0,1,2,3)(编号也就是0,1,2,n-1)
价值分别是 30,20,10,40
最大价值是90(取编号0,1,3)
items={ 3, 30 }, { 5, 20 }, { 4, 10 }, { 2, 40 }
当n=4时,求的是4个物品, 装入重量为10的背包里能达到的最大价值
n=4 C=10
w =3, 5, 4, 2
v =30,20,10,40
当把第3个物品(从0编号)去掉问题变成
当n=3时,求的是3个物品, 装入剩余重量为8(10-2) 的背包里能达到的最大价值
n=3 C=8
w =3, 5, 4
v =30,20,10
最大价值是50(取编号0,1)
n个物品 (0,1,2…,n-1)装到剩余容量为C的背包中的最大价值
假设函数f表示最大价值
装入
f(4,10)=f(3,10-2)+40
=f(3,8 )+40
不装入
f(4, 10)=f(3, 10)
结果是
f(4,10)=max{ f(3,10), f(3,8)+40 } 装入与不装入 取最大值
n=1,2,3 表示任意其中一个定义为i,
表示任意一个重量定义为j
f(i, j)表示一个状态,下面就是状态转移方程
f(i, j)=max{ f(i-1, j), f(i-1,j-w[i-1]) + v[i-1] }
这个式子就是wiki第三个式子,只是字母不同
flyfish
0/1背包问题(0/1 knapsack problem)
我们有n种物品,编号是 0,1,2,3…,n-1,物品i的重量(weight)为wi,价值(value) 为vi。
我们假定所有物品的重量和价格都是非负的。
背包所能承受的最大重量(maximum weight capacity)为C。
限定每种物品只能选择0个或1个。
目的是得到动态规划的状态转移方程
物品个数n为4
承受的最大重量C=10
重量分别是 3, 5, 4, 2 (编号0,1,2,3)(编号也就是0,1,2,n-1)
价值分别是 30,20,10,40
最大价值是90(取编号0,1,3)
items={ 3, 30 }, { 5, 20 }, { 4, 10 }, { 2, 40 }
当n=4时,求的是4个物品, 装入重量为10的背包里能达到的最大价值
n=4 C=10
w =3, 5, 4, 2
v =30,20,10,40
当把第3个物品(从0编号)去掉问题变成
当n=3时,求的是3个物品, 装入剩余重量为8(10-2) 的背包里能达到的最大价值
n=3 C=8
w =3, 5, 4
v =30,20,10
最大价值是50(取编号0,1)
n个物品 (0,1,2…,n-1)装到剩余容量为C的背包中的最大价值
假设函数f表示最大价值
装入
f(4,10)=f(3,10-2)+40
=f(3,8 )+40
不装入
f(4, 10)=f(3, 10)
结果是
f(4,10)=max{ f(3,10), f(3,8)+40 } 装入与不装入 取最大值
n=1,2,3 表示任意其中一个定义为i,
表示任意一个重量定义为j
f(i, j)表示一个状态,下面就是状态转移方程
f(i, j)=max{ f(i-1, j), f(i-1,j-w[i-1]) + v[i-1] }
这个式子就是wiki第三个式子,只是字母不同
相关文章推荐
- 动态规划算法解0-1背包问题
- 背包问题的动态规划算法
- 01背包问题的动态规划算法、蛮力法和空间优化算法
- 每天一道算法题(一) (动态规划算法)背包问题Java实现
- 动态规划算法实现部分——0/1背包问题
- 0/1背包问题的动态规划算法
- 动态规划算法求解0-1背包问题
- 经典算法题04-动态规划算法(背包问题)
- 0-1背包问题(动态规划算法)
- 0-1背包问题动态规划算法
- 01背包问题的动态规划算法
- 数据结构与算法学习之路:背包问题的贪心算法和动态规划算法
- 01背包问题,是用来介绍动态规划算法最经典的例子
- [算法]背包问题的动态规划算法解答,C语言实现
- 动态规划算法解决0-1背包问题
- C++实现动态规划算法之解决0-1背包问题
- 动态规划算法0-1背包问题java实现
- 动态规划算法,背包问题
- 动态规划算法-背包问题
- C++动态规划算法之0-1背包问题