所以我在想,形成背景问题变化的动态规划算法
我想对背包问题做一个变化。
想象一下原来的问题,具有不同重量/价值的物品。
我的版本将与正常的权重/值一起包含“组”值。
例如。 项目1 [5KG,$ 600电子] 项目2 [1KG,$ 50食品]
现在,有一组这样的项目,我将如何编写了背包问题,以确保从最多1项选择每个“组”。
注:
- 你并不需要从该组中选择一个项目
- 有各组
- 你还在重量最小化在多个项目,实现价值最大化
- 的预定义的组的数量以及它们的值。
我只是在这个阶段写了一个代码草稿,而且我选择了使用动态方法。我理解常规背包问题的动态解决方案背后的想法,我如何改变这个解决方案以合并这些“组”?
KnapSackVariation(v,w,g,n,W)
{
for (w = 0 to W)
V[0,w] = 0;
for(i = 1 to n)
for(w = 0 to W)
if(w[i] <= w)
V[i,w] = max{V[i-1, w], v[i] + V[i-1, w-w[i]]};
else
V[i,w] = V[i-1, w];
return V[n,W];
}
这是我到目前为止,需要补充它,这样它会删除它是每一个它解决了这次在组中的所有相关项目。
将群组项添加到状态! – quasiverse
解决它作为一个组合优化问题呢?对于每件商品,您可以选择一件商品或者不选择商品。您可能想使用分支和界限搜索来解决它。 – ysdx