虽然标准的背包问题可以通过动态规划解决,但我试图稍微改变一下问题来澄清我的概念,但我发现这可能比我想象的更难。
原始的背包问题是这样的:给定一个大小为W
的背包和一个物品列表,其中物品的重量为w[i]
,价值为v[i]
,找到能够放入背包中且总价值最高的物品子集。
据我所知,这可以通过动态规划以O(Wn)
的时间复杂度完成,其中n
是物品数量。
现在,如果我尝试添加m
个限制条件,每个条件都是一对互斥选择的物品(即如果存在物品A和物品B的限制,则我只能选择其中一个而不能同时选择两个)
在这样的限制条件下,这个问题仍然可以在O(Wn)
的时间复杂度内通过动态规划解决吗?