减少子集的数量

Posted

技术标签:

【中文标题】减少子集的数量【英文标题】:reducing the number of subsets of 【发布时间】:2017-05-12 11:24:38 【问题描述】:

这里的问题。假设我们有一大组 N 个元素。我们还有一个包含 M 个小元素集合的大列表,这些小集合可以与它们相交,这意味着它们可以有许多相同的元素:SE (1->M)。 现在我们的目标是找到给定 n 个元素(其中 n

例如:

(1 2 3 4 5 6 7 8 9 10 11 12) = big set with N = 12

(1 3 7 8)
(1 2 3 10 12)
(4 5 7 9)
(6 10 12)
(3 5 9 12)
(2 4 6 8)
(1 2 3 4)

假设集合的总和不能超过 9 个元素(

那么一种解决方案是:

subset1
(1   3   7 8 )
(1 2 3         10 12)
(    3 5     9    12)
subset 2
(      4 5   7   9)
(          6       10 12)
(  2   4   6   8)
(1 2 3 4)

谁给我一些提示?

【问题讨论】:

您有实际问题吗?如果您要求一般提示,我会说这个问题太宽泛了。 这个问题很不清楚。问题是找到最大数量的子集,使得它们的并集大小 好的。让我们用真正的问题来解决它。 【参考方案1】:

我想到的一个简单的或者你可以说是蛮力的方法是,根据它们的大小对小集合进行排序,所以现在我们的订单看起来像这样 ->

(6,10,12), (1,3,7,8), (4,5,7,9), (2,4,6,8), (1,2,3,4), (3,5,9,12), (1,2,3,10,12)

总大小计数 = 4*5 + 3 + 5 = 28 是大小。所以我们每个子集的大小应该小于9,

所以需要的子集桶数 = 28 / 9 = 4。

所以现在取 4 个桶并开始插入从 i = 0 到 i = 长度的小集合,其中长度 = 小集合的数量。

希望这会有所帮助!

【讨论】:

好的。让我们用真正的问题来解决它。我有很多来自 M 个客户的订单,他们订购了 M 个需要由机器生产 K 个元素的对象。对象的每个元素都取自一大组 N 元素,但机器一旦设置就可以同时管理“n”个元素(其中 n

以上是关于减少子集的数量的主要内容,如果未能解决你的问题,请参考以下文章

如何获得一个类别的子集数量?

如何计算集合 1,2,3,..,n 的互质子集的数量

查找总和等于 k ​​的子集的数量

DataFrame 的 Pandas 子集,每个类具有固定数量的值 [重复]

特征选择

py返回某集合的所有子集