【发布时间】:2010-08-24 16:24:36
【问题描述】:
我们有一组项目 I = {i_1, i_2, ..., i_n}。这些项目中的每一个都有我们所说的 p 值,它是一个实数。我们想要选择 I 的一个子集,称为 I',大小为 m(对于一些 m,1 p 值的平均值' 落在某个指定的范围内,[p_l, p_u]。 (例如,我们可能需要一个介于 0.70 和 0.74 之间的平均 p 值。)此外,我们希望有效地做到这一点。
我们希望在 O(n) 时间内做到这一点,但是任何多项式时间算法都足够好。我们当然不想只尝试大小为 m 的 I 的每个可能子集,然后检查它是否满足平均 p 值约束。
最后,我们将重复执行此操作,并且我们希望选择的子集在所有可能的此类子集上均匀随机分布。
有没有办法做到这一点?
【问题讨论】:
-
多项式时间算法似乎不太可能。这个问题很可能等价于一般的Constrained Subset Selection Problem,即NP。如果您的输入值围绕某个枢轴紧密聚集,并且具有正态分布,则您可以使用回溯算法来选择满足要求的子集。但是,确保在 l 的所有成员上获得均匀的随机分布将是一项挑战。在 mathoverflow.com 寻求帮助可能会更好。
-
感谢您的评论。我倾向于认为这个问题也很棘手。我可能会在 mathoverflow.com 上提问,但到目前为止,我发现 Stack Overflow 对这类理论问题更有帮助。
标签: combinatorics