所以我遇到了一个我想解决的有趣问题。当我试图解决具有非确定性转换的游戏时遇到了它。如果你曾经听说过这个问题,或者知道它是否有关于它的名字/论文,请告诉我!在这里。
给定n个盒子和m个元素,其中n1具有i1个元素,n2具有i2个元素等(即i1 + i2 + ... + in = m)。每个元素都有一个权重w和值v。从每个n个框(解决方案大小= n)中精确选择一个元素,使得值最大化并且权重<= k(某个输入参数)。
我注意到的第一件事是解决方案中有i1 * i2 ...... *。这小于m选择n,小于2 ^ m,这是否意味着问题在于P(对不起,我的数学有点模糊)?有没有人知道一个不涉及迭代每个解决方案的算法?近似没问题!
编辑:好的,所以这个问题实际上与背包问题相同,所以它是NP难的。让方框分别包含两个元素,一个是零大小和零值,另一个是非零大小和非零值。这与背包相同。谁能想到一个聪明的伪多项式时间算法/转换为背包?
答案 0 :(得分:0)
这看起来足够接近http://en.wikipedia.org/wiki/Knapsack_problem#0.2F1_Knapsack_Problem,几乎相同的m [i,w]定义将起作用 - 让m [i,w]成为可以通过权重&lt; = w使用项目到i。唯一的区别是,在每个阶段,而不是考虑是否采取项目,考虑你应该采取的每个阶段可能的项目。