切换到宽版
  • 13995阅读
  • 14回复

多重背包问题 [复制链接]

上一主题 下一主题
离线rocket323
 
只看楼主 倒序阅读 0 发表于: 2006-07-12
有谁可以讲讲背包问题,拜托拜托~~~~~~~~
离线rocket323
只看该作者 1 发表于: 2006-07-13
无人理睬,最后自问自答:用搜索!!
离线r134a
只看该作者 2 发表于: 2006-07-28
你是说哪一种背包问题?
如果是不可分割的背包问题:~~就用动归(搜索在超过20种物品时效率低!)
如果是可以分割的背包问题,就用谈心吧!(按信价比排序,先取大的!)
.


祝大家明年NOIP大获全盛!


.
离线r134a
只看该作者 3 发表于: 2006-07-28
对了,什么叫“多重背包问题”?
.


祝大家明年NOIP大获全盛!


.
离线wgwshwjm
只看该作者 4 发表于: 2006-08-14
什么意思??
离线swj05652
只看该作者 5 发表于: 2006-08-24
多重背包问题一般用迭代搜索。 用动规的话内存不够的。一般出这种题都会存在很好的剪枝。

以USACO 4.1.2 Fence Rails (fence8)为例:

我们用迭代搜索(DFSID)来解决。
枚举能放入的rail数,然后DFS搜索是否有解,因为每个rail的价值都是1,所以对于放入d个rail,肯定选择长度最小的d个rails从board中切。
把rail按长度升序排序,搜索每个board中放哪些rail,DFS(bn,dep)来搜索当前第bn个board,已放入dep个rail的方案,这里有两个剪枝:

1.任何时刻board中剩余的空间都要>=等待放入的rail的长度和,如果不满足这个条件就剪枝。

2.如果几个rail的长度一样,而用其中的1个放入当前board中无法得到解,那么直接跳过所有和这个rail长度一样的rail。

边界条件:dep>r时有解,bn>n时无解。

此外,枚举能放入的rail数时,我们采用二分枚举来加快速度。
离线nanzheng
只看该作者 6 发表于: 2006-09-21
用动规做不行吗?
离线q422158622
只看该作者 7 发表于: 2006-11-14
不懂~~~~~~~请问2楼,什么是不可分割的背包问题,什么是可分割的背包问题???
离线archimedes

只看该作者 8 发表于: 2006-11-15
引用第5楼swj056522006-08-24 14:50发表的:
多重背包问题一般用迭代搜索。 用动规的话内存不够的。一般出这种题都会存在很好的剪枝。
以USACO 4.1.2 Fence Rails (fence8)为例:
我们用迭代搜索(DFSID)来解决。
.......

大牛~
离线swj05652
只看该作者 9 发表于: 2006-11-17
其实是转自starforever的
快速回复
限100 字节
 
上一个 下一个