算法高手请看有关回溯法求0-1背包问题(在线)
这是西安电子科技大学的霍红卫所编的《算法设计与分析》第5章回溯法中求0-1背包的问题,
该书校对错误不少。
下面算法中的采取回溯法求0-1背包,第16行出现fp,该变量在上下文中并没有说明,请高手解答一下,这个变量表示什么意思。
谢谢。
BT-KNAPSACK(W, n, w, v, fw, fv, X)
1 cw ← cv ← 0 //cw:背包当前已用权值;cv:背包当前总价值
2 k ← 1
3 fv ← -1 //fv:背包的最大值,初始化为-1
4 do
5 While k ≤ n and cw+w[k] ≤ W do //测试物品k是否可以放入背包
6 cw ← cw+w[k] //修改当前背包已用权值cw
7 cv ← cv+v[k] //修改当前背包总价值cv
8 y[k]← 1 //做左孩子结点的移动
9 k ← k+1 //继续考虑下一个物品
10 if k>n //如果所有物品考虑过(退出循环后)
11 then fv ← cv //复制这个解产生的总价值
12 fw ← cw //复制这个解所占背包权值
13 k ← n
14 X ← Y //更新解
15 else y[k] ← 0 //最后放入背包中的物品k不合适, 去掉
16 while BOUND(cv, cw, k, W) ≤ fp do
17 while k ≠ 0 and y[k] ≠ 1 do
18 k ← k-1 //找最后放入背包的物品
19 if k=0
20 then return //算法返回
21 y[k] ← 0 //做右孩子结点的移动
22 cw ← cw-w[k] //修改当前背包占用权值
23 cv ← cv-v[k] //修改当前背包总价值
24 k ← k+1
25 while(1)