【发布时间】:2015-06-06 15:38:57
【问题描述】:
我正在阅读 CLRS,试图自学并发现这部分很难。
我正在尝试解决,但实际上没有可参考的解决方案。
假设你有输入:x1, x2, x3, ..., xn m1, m1, m3, ... mn M1 and M2
那你要输出:A partition into two disjoint subsets S, T (so the intersection is an empty set) so that the sum of each mk (1<=k<=n) of all elements in S is <= M1 and the sum of each mk (1<=k<=n) of all elements in T is <= M2, so that the total value sum of all (xk's in S) + (xk's in T) is maximized. where (1<=k<=n)
我试图证明它在 NP 中。 我在进行动态编程时遇到了类似的问题,相信这是针对背包的。但这似乎有点复杂。我一直在废纸上写,但似乎无处可寻。这是出于个人兴趣。
【问题讨论】:
-
这不是一个决策问题,一个相关的决策问题可能是“是否存在一个分区,其总和大于 Y”。显然在 NP 中 - 给定两个集合,测试所有要求非常容易。
-
嗯,我明白了,我想我必须先将这个“优化”问题转化为决定?
-
是的。然后在这种情况下,甚至可以很容易地证明它是 NP 完全的,使用与背包的明显联系
-
我有点迷路了。这东西对我来说真的不明显哈哈。我只是想在NP中证明它。小心阐述?非常感谢您的帮助。
-
xi或<= M1或<= M2是否必须包含在S和T中?mks 的意义和/或意义是什么? (据我所知,ms 和xs 只能是一对一的。)如果它与value一致,xs 与 @ 987654333@s 小于较小的Mj可能会转到一个子集,ms 在Ms 之间的那些会转到另一个子集-双枢轴分区/快速排序?似乎在P中,在NP中包含……
标签: algorithm complexity-theory theory