【发布时间】:2012-02-13 13:12:37
【问题描述】:
给定一组整数,是否存在总和为零的非空子集?
这个问题通常是 NP 完全的。我很好奇这种轻微变体的复杂性是否已知:
给定一组整数,是否存在大小为
k且总和为零的子集?
例如,如果k = 1,您可以进行二分搜索以在O(log n) 中找到答案。如果是k = 2,那么您可以将其降为O(n log n)(例如,参见Find a pair of elements from an array whose sum equals a given number)。如果是k = 3,那么你可以做O(n^2)(例如见Finding three elements in an array whose sum is closest to a given number)。
是否存在可以作为
k函数的已知界限?
作为动机,我正在考虑这个问题How do you partition an array into 2 parts such that the two parts have equal average? 并试图确定它是否实际上是 NP 完全的。答案就在于有没有上面所说的公式。
除非有一个通用的解决方案,否则我很想知道k=4 的最佳界限。
【问题讨论】:
-
从技术上讲,
k=1的下限是O(n)(您不能假设输入已排序) -
@awesomo 当然,如果您愿意,但假设输入已排序并不会改变太多问题。
标签: algorithm language-agnostic np