d)定义 V(i,j):当前背包容量 j,前 i 个物品最佳组合对应的价值;
e) 最优性原理是动态规划的基础,最优性原理是指“多阶段决策过程的最优决策序列具
有这样的性质:不论初始状态和初始决策如何,对于前面决策所造成的某一状态而言,其
后各阶段的决策序列必须构成最优策略”。判断该问题是否满足最优性原理,采用反证法证
明:
假设(X
1
,X
2
,…,Xn)是 01 背包问题的最优解,则有(X
2
,X
3
,…,Xn)是其子问
题的最优解,
假设(Y
2
,Y
3
,
…,Yn)是上述问题的子问题最优解,则理应有(V
2
Y
2
+V
3
Y
3
+…
+VnYn)+V
1
X
1
> (V
2
X
2
+V
3
X
3
+…+VnXn)+V
1
X
1
;
而(V
2
X
2
+V
3
X
3
+…+VnXn)+V
1
X
1
=(V
1
X
1
+V
2
X
2
+…+VnXn),则有(V
2
Y
2
+V
3
Y
3
+…
+VnYn)+V
1
X
1
>(V
1
X
1
+V
2
X
2
+…+VnXn);
该式子说明(X
1
,Y
2
,Y
3
,
…,Yn)才是该 01 背包问题的最优解,这与最开始的假
设(X
1
,X
2
,…,Xn)是 01 背包问题的最优解相矛盾,故 01 背包问题满足最优性原理;
f)寻找递推关系式,面对当前商品有两种可能性:
第一,包的容量比该商品体积小,装不下,此时的价值与前 i-1 个的价值是一样的,
即 V(i,j)=V(i-1,j);
第二,还有足够的容量可以装该商品,但装了也不一定达到当前最优价值,所以
在装与不装之间选择最优的一个,即 V(i,j)=max{ V(i-1,j),V(i-1,j-w(i))+v(i) }
其中 V(i-1,j)表示不装,V(i-1,j-w(i))+v(i) 表示装了第 i 个商品,背包容量减
少 w(i)但价值增加了 v(i);
由此可以得出递推关系式:
1) j<w(i) V(i,j)=V(i-1,j)
2) j>=w(i) V(i,j)=max{ V(i-1,j),V(i-1,j-w(i))+v(i) }
g)填表,首先初始化边界条件,V(0,j)=V(i,0)=0;
h)然后一行一行的填表,
1)如,i=1,j=1,w(1)=2,v(1)=3,有 j<w(1),故 V(1,1)=V(1-1,1)=0;
评论0
最新资源