【发布时间】:2017-08-15 17:25:31
【问题描述】:
我有两套-
set1 - {i1,i2,i3...iN1}
set2 - {k1,k2,k3...kN2}
对于任何 n 个项目的集合,我可以使用位掩码 0-2^n -1 表示所有可能的子集。 同样,我该如何表示 -
set1 和 set2 的所有可能子集,其中至少 1 个项目来自不同的集合。
例如
{i1,i2,k1} 有效
但是 {i1,i2} - 无效,因为它没有来自 set2 的项目。
我正在尝试生成两件事 -
一种可以给我计算所有子集的等式,就像我们有 2^n 个子集用于单个 n 项集。
位编码/掩码,我可以使用它来表示上述类型的子集。
【问题讨论】:
-
集合是否不相交?
-
不,它们可以有共同的数字。
-
@GD 要清楚这个问题,所以如果一组 A 有 = {1,2,3} 并且 B 有 = {2} 并且我的最后一组有来自 A 的 1 和来自 B 的 3 并且所以最终的集合看起来像 - {1,3},根据提供的约束,这会被认为是一个有效的子集吗?
-
@zenwraight 是的,它只是至少 1 项应该存在于第二组中,否则它不再是两组的子集。
-
@G.D 是的,它们是不相交的集合,然后它变得非常容易,因为它归结为一个简单的组合问题......
标签: algorithm bit-manipulation