• 全部
  • 问答

算法高手请看有关回溯法求0-1背包问题(在线)

jqmoab 2008-11-27 05:31:13
这是西安电子科技大学的霍红卫所编的《算法设计与分析》第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)

...全文
370 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jqmoab 2008-11-28
况且fp应该不会是从键盘输入的,也不是传递过来的参数。
回复
jqmoab 2008-11-28
如果是当前最大价值,fp又是怎么通过BOUND函数求出呢?
BOUND是使用贪心法求出右子树的上界的。
回复
fengcman 2008-11-27
粗略看一下,应该是当前的最大价值
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-11-27 05:31
社区公告
暂无公告