我们可以解决DP中的这种0-1多重背包问题吗?

时间:2019-03-29 00:41:20

标签: algorithm dynamic-programming knapsack-problem

问题是:给定一组n个项目和一组m个背包,c [i]是背包i的容量,w [j]是项目j的权重,p [i] [j]为将物品j放到背包i的利润,这意味着如果放置在不同的背包中,物品可能会有不同的利润。

我们必须找到最佳解决方案,以使所选项目的总利润最大化,并且所有所选项目都必须放在同一背包中。例如,如果有两个背包A和B,则最终解决方案不能是将某些物品放在A中,又不能将某些物品放在B中。所有选定的物品都必须放在A或B中。因此,这个问题有些不同来自传统的0-1多重背包问题。

一种解决方案是将多个背包问题分解为多个0-1背包小问题。对于每个背包,我们可以使用动态编程来解决0-1背包问题,并找到此背包的最大利润。使用相同的算法遍历所有背包并选择最大获利,我们可以获得所需的解决方案。

我想知道,是否有更好的方法且时间复杂度更高,可以解决此问题?还是采用任何动态编程方法来避免遍历所有背包?如果没有更好的方法,该如何证明?

0 个答案:

没有答案