【发布时间】:2016-11-29 15:47:54
【问题描述】:
虽然标准的背包问题可以通过动态编程来解决,但我试图稍微扭曲一下这个问题以澄清我的概念,但我发现它可能比我想象的要难。
原来的背包问题是给定一个大小为W的背包,以及一个重量为w[i]且值为v[i]的物品的列表,找到总价值最高的背包中的物品子集.
据我了解,这可以通过O(Wn) 使用动态编程来完成,其中n 是项目数。
现在,如果我尝试添加m 约束,它们中的每一个都是一对只能相互独占挑选的物品(即,如果存在物品 A 和物品 B 的约束,那么我只能取其中一个其中但不是两者)
在这样的约束下,O(Wn)中的动态规划还能解决这个问题吗?
【问题讨论】:
标签: algorithm dynamic-programming