如何仅获得组合子集 - 具有限制的组合

时间:2013-11-16 17:31:59

标签: r combinations

我将以两种不同的方式解释我的问题,请选择你更了解的问题。如果有什么不清楚的地方,请在评论中告诉我。

版本1

为了试图让它更清楚,我将从另一个角度解释同样的问题:

我有一个包含5列和3行的二进制矩阵:

        [,1] [,2] [,3] [,4] [,5]
  [1,]    1    1    1    0    0
  [2,]    0    0    1    1    0
  [3,]    0    0    0    1    1

我对(几乎)此矩阵的所有版本感兴趣,只通过置换行。有一个约束:我只想要每个列至少有一个列的排列。如上所述,我已经计算出有370种可能性,每列中保持一个1或1个行维持行。我的问题是,是否有可能获得这些矩阵而不必经历所有1000种可能的排列?

版本2

我想计算一些概率,因为我有3个元素表,每10个列需要组合。

Table 1: combn(5,3) -> 10 combinations
 > combn(5,3)
       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
    [1,]    1    1    1    1    1    1    2    2    2     3
    [2,]    2    2    2    3    3    4    3    3    4     4
    [3,]    3    4    5    4    5    5    4    5    5     5

Table 2 & 3: combn(5,2) -> 10 combinations
 > combn(5,2)
       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
  [1,]    1    1    1    1    2    2    2    3    3     4
  [2,]    2    3    4    5    3    4    5    4    5     5

现在我需要拥有所创建组的所有组合,但只需要包含至少一次所有可能元素的组合(1,2,3,4,5)。有1000种可能的组合,我只对370感兴趣。

我能想到的唯一解决方案是运行所有可能的组合(使用expand.grid()并检查是否所有元素都存在。我希望有一个更简单的解决方案。同时这个例子并不构成要计算很麻烦,一旦数量增加,我可以节省大量的计算时间,如果我只能直接获得我所讨论的组合。

0 个答案:

没有答案