生成整数并设置分区

生成所有整数分区并设置分区,其中部件/子集的数量可以是固定的或任意的。
对象类型
整数/集合的大小$n$ (最多15)
部件/子集的数量$m$ (1至$n$之间)
输出格式
输出  编号绘图

对象信息

这个整数分区描述将这个数字写成正的较小数字之和的所有方法,称为部分,其中部件的顺序无关。零件通常按降序列出。例如,5的七个整数分区是$5=4+1=3+2=3+1+1=2+2+1=1+2+1+1=1+1+1+1+1$。数字分区可以通过费雷尔斯图,它由一系列行框组成,每行中从上到下的框数由分区中的部分给出。例如,前面的5个分区生成了下图所示的图表。

一个集合分区基本集的划分是将该集划分为非空子集,其中子集的排序无关。每个子集中元素的排序也是不相关的,我们使用字典排序而不损失通用性。例如,基本集$\{1,2,3\}$的所有五个集合分区都是$123,12|3,1|2|3,1|23,13|2$,其中子集之间的边界由竖线表示,为了简单起见,省略了子集括号。

该网站上运行的算法是Jörg Arndt的FXT库的一部分。生成整数分区的算法在Knuth的书中的算法P和H中进行了描述[第7.2.1.4节,Knu11]。生成集合划分的算法在Knuth的书中被描述为算法H[第7.2.1.5节,Knu11]。

枚举(OEIS)

整数分区的数量由分区数给定(OEIS A000041公司),集合分区的数量由贝尔数给出(OEIS A000110公司).

下载源代码

[压缩C++源代码(GNU GPL)]
[Jörg Arndt的FXT库链接(GNU GPL)]

工具书类