繁体   English   中英

如何找到从 k 个子集中选择一个的组合数

[英]How to find number of combinations of choosing one from k subsets

考虑我们已经设置了 S:

S = {1,2,3,4,5,6}

和 S 的 3 个(比如 k 个)子集:

S_1 = {1,2,3}

S_2 = {2,3,4,5}

S_3 = {1,3,6}

从每个子集中选择一个元素的案例总数是多少?

不能从不同的子集中挑选相同的元素,并且不考虑顺序。

例如,

S_1 = {2},S_2 = {3},S_3 = {6}

S_1' = {3},S_2' = {2},S_3' = {6}

视为相同。

S_1' = {3},S_2' = {3},S_3' = {1}

无效,因为 S_1' 和 S_2' 选择了相同的元素。

我该如何制定这个?

这个问题类似于计算二分图完美匹配的数量。

对 model 这样,构造一个二分图,其中 A = { 1, ..., k },B 是原始集合 S,当y是集合的成员时,存在从x ∈ A 到y ∈ B 的边S_x

完美匹配对应于将 A 的每个元素与 B 的不同元素匹配的边的子集; 对于每个集合S_x,此匹配选择一个不同的元素yS_x 也就是说,多个不同的匹配可能匹配来自 B 的相同k个元素,这意味着由于在您的问题中未考虑顺序而导致的过度计数(即,出于您的目的,从 A 到那些k元素的哪条边 map 并不重要)。 尽管如此,这些问题非常相似,并且很可能每个问题都可以简化为另一个问题。

根据这个关于 math.SE 的答案,没有已知的计算完美匹配的有效算法,因此对于这个类似问题也可能没有已知的有效算法。 这表明您不太可能比某种回溯搜索做得更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM