Math 第二类多集斯特林数

Math 第二类多集斯特林数,math,optimization,set,counting,discrete-mathematics,Math,Optimization,Set,Counting,Discrete Mathematics,我在看[Stirling number of the second Kinds],这是将一组长度n拆分为k个非空子集的方法总数,其中顺序无关紧要,我想知道如何编写一个非朴素的算法来计算 S(n, k {occurences of each element}) 在哪里 将给出一个包含6个元素的集合,其中3个是相同的元素,另2个是不同的元素,1个是其唯一元素的集合可以拆分为3个非空集合的方式总数,忽略排列 对于第二类正则斯特林数Sn,k,有一个递归公式,但不太可能是多重集的可比函数。 那么什么是可

我在看[Stirling number of the second Kinds],这是将一组长度n拆分为k个非空子集的方法总数,其中顺序无关紧要,我想知道如何编写一个非朴素的算法来计算

S(n, k {occurences of each element})
在哪里

将给出一个包含6个元素的集合,其中3个是相同的元素,另2个是不同的元素,1个是其唯一元素的集合可以拆分为3个非空集合的方式总数,忽略排列

对于第二类正则斯特林数Sn,k,有一个递归公式,但不太可能是多重集的可比函数。 那么什么是可以计算这个数字的算法呢


关于Math.SE的相关问题,没有一个真正的方法来计算这个数字。

我认为更自然的概括是Snu,kappa,其中每个都是一个分区。Nu是对n的多集求和。Kappa是k的一个划分,其中k的每个部分都是不可区分子集子多重集的集合。第二类通常的斯特林数对应于分区n=1+1+1…+1和k=1+1+1+…+1。要恢复Snu,k,请在k的所有分区上求和。如果kappa的部分大于nu的最大部分,则计数为0。通过该推广,存在重复。当你给nu加上一个大小为1的部分时,这很简单,但如果你加上一个大的部分,这就更复杂了。@Douglas Zare当你说求k的所有可能的分区的和时,我是否也应该求所有可能的nu的和?你说过要把Kappa变成一个子多重集,所以唯一的可能性是,它受到k的因式分解的限制……我想。Nu的可能多集是否有任何界限,每个都必须加总为n?@Cimbali,你能将我链接到讨论/列出这些公式的论文/书籍/网站吗?我更倾向于寻找一种通用的方法,你不需要在n的分区上求和,但是如果你指定一些子集k,这对应于许多kappa分区。kappa的每个部分代表nu的相同子集合的集合。例如,可以有nu={6,3},k=4。一种可能的kappa是3+1。一位代表是{{A,A},{A,A},{A,A},{B,B,B}。另一个是{A,B},{A,B},{A,B},{A,A,A}。另一个是{A},{A},{A},{A,A,B,B}。是的,kappa和nu之间的关系还有其他限制条件,以使计数不为零。所以,如果您对一些枚举族感兴趣。。。
S(6, 3, {1, 2, 3} )