组合生成器

这个组合计算器从n个元素的集合中生成m个元素的所有可能组合。

例如,如果你有一个由3个元素组成的集合{A,B,C},那么2个元素的所有可能组合将是{A,B}, {A,C}和{B,C}。 即 组合 在此表示从n个事件的组合中每次取出m个事件,没有重复,可能的组合总数如下,如组合学-排列组合 所示
C_{n}^m=\frac{n!}{m!(n-m)!}.
要使用下面的组合生成器,你需要填写集合(默认情况下,它由A、B、C、D和E元素组成),并输入组合大小。所有的组合都将使用词法算法生成。生成器所使用的算法的描述可以在计算器下面找到。

PLANETCALC, 组合学及组合的生成器

组合学及组合的生成器

集合

每页项目:

这个文件很大。浏览器在加载和创建过程中可能会减速。

组合产生器算法

组合是按照词序顺序生成的。该算法使用集合中元素的索引。下面是它工作方式的例子:
假设我们有一组5个元素,索引为1 2 3 4 5(从1开始),我们需要生成m = 3的所有组合。

首先,我们用升序索引
1 2 3初始化第一个大小为m 的组合
然后检查最后一个元素(i = 3)。如果它的值小于n - m + i,就将它加1。
1 2 4
再次检查最后一个元素,由于它仍然小于n - m + i,再将它加1。
1 2 5
现在它有了最大允许值:n - m + i = 5 - 3 + 3 = 5,所以我们转向前面的元素(i = 2)。
If its value less than n - m + i, it is incremented by 1, and all following elements are set to value of their previous neighbor plus 1
如果它的值小于n - m + i,则将它加1,并将其后的所有元素设置为其前一个邻数的值加1
1 (2+1)3 (3+1)4 = 1 3 4
然后再从最后一个元素i = 3开始
1 3 5
返回到 i = 2
1 4 5
现在它最终等于 n - m + i = 5 - 3 + 2 = 4, 所以我们可以转向第一个元素 (i = 1)
(1+1)2 (2+1)3 (3+1)4 = 2 3 4
然后,
2 3 5
2 4 5
3 4 5 这是最后一个组合,因为所有的值都被设置为n - m + i的最大可能值。

URL 复制到剪贴板
PLANETCALC, 组合生成器

评论