带有 2 个麻袋的 0-1 背包的算法?

algorithm for the 0-1 Knapsack with 2 sacks?

正式地说,我们有 2 个麻袋,容量为 c1 和 c2。有 N 个项目,利润为 pi,权重为 wi。与 0-1 背包问题一样,我们需要用这些项目填充 c1 和 c2,以使整体利润最大化。假设pi和wi是正整数!

对于2背包问题下面的递归关系成立吗?

DP[I][J][K] 是我们可以从前 i 件物品中获得的最大利润,这样背包 #1 中正好使用了 j 的重量,背包 # 中正好使用了 k 的重量2

DP[i][j][k] = max(DP[i-1][j][k], DP[i][j-1][k], DP[i][j ][k-1], DP[i][j-W[j]][k] + C[i], DP[i][j][k-W[k]] + C[i])

假设C[i]和W[i]分别是物品的价值和重量。

鉴于 j-W[i] >0, k-W[i] > 0(为了便于编写公式。我们仍然可以通过添加两行来编写不带此假设的公式),方程式应为

DP[i][j][k] = max(DP[i-1][j][k], DP[i-1][j-W[i]][k]+C[i ],DP[i-1][j][k-W[i]]+C[i])