【问题标题】:How to find number of combinations of choosing one from k subsets如何找到从 k 个子集中选择一个的组合数
【发布时间】:2020-03-12 04:18:41
【问题描述】:

假设我们设置了 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' 选择了相同的元素。

我该如何制定这个?

【问题讨论】:

  • 你的符号有问题吗?我知道 S_i 是给定的,然后您使用相同的符号 S_i 来选择每个日落中的一个元素。对不起,如果我误解了
  • 是的,我没有严格遵循符号。我让他们 S_i' 澄清。

标签: algorithm set set-theory


【解决方案1】:

这个问题类似于在bipartite graph 中计算perfect matchings 的数量。

要以这种方式对其进行建模,请构建一个二分图,其中 A = { 1, ..., k },B 是原始集合 S,以及来自 x 的边当 y 是集合 S_x 的成员时,em> ∈ A 到 y ∈ B 存在。

完美匹配对应于将 A 的每个元素与 B 的不同元素匹配的边的子集;对于每个集合 S_x,此匹配选择一个不同的元素 y ∈ S_x。也就是说,多个不同的匹配可能会匹配来自 B 的相同 k 元素,这意味着由于在您的问题中没有考虑顺序(即出于您的目的,从哪个边缘映射无关紧要) A 到那些 k 元素)。尽管如此,这些问题非常相似,并且很可能每个问题都可以归结为另一个问题。

根据this answer on math.SE,没有已知的计算完美匹配的有效算法,因此也可能没有已知的有效算法来解决这个类似问题。这表明您不太可能比某种backtracking search 做得更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2021-05-23
    • 1970-01-01
    • 2019-09-23
    • 2022-01-19
    相关资源
    最近更新 更多