第一类斯特林数没弄懂,先咕了。
对于第二类斯特林数记做 (egin{Bmatrix}n\ mend{Bmatrix}),也可记做 (S(n,m)),表示将 (n) 个两两不同的元素,划分到 (m) 个互不区分的非空集合的方案数。
递推式
[egin{Bmatrix}n\ mend{Bmatrix}=egin{Bmatrix}n-1\ m-1end{Bmatrix}+m×egin{Bmatrix}n-1\ mend{Bmatrix}
]
边界是 (egin{Bmatrix}n\ 0end{Bmatrix}=[n=0])
证明:
新插入一个元素时,有两种方案:
- 将新元素放进一个新集合里,方案数为 (egin{Bmatrix}n-1\ m-1end{Bmatrix})
- 将新元素放进一个原来有的集合里,方案数为 (m×egin{Bmatrix}n-1\ mend{Bmatrix})
最后用加法原理相加即可。
通项公式
(egin{Bmatrix}n\ mend{Bmatrix}=frac{1}{m!}sum_{i=0}^m(-1)^{m-i} binom{m}{i}i^n)
简单理解就是每次钦定有多少个集合有元素,再容斥一下解决,最后因为无序,再除以个 (frac{1}{m!})。
证明:
证明采取二项式反演,设 (f(i)) 为将 (n) 个元素划分成 (i) 个两两不同的集合的方案数(允许有空集),(g(i)) 为将 (n) 个元素划分成 (i) 个两两不同的非空集合的方案数(不允许有空集)
易得
[f(i)=i^n\
f(i)=sum_{j=0}^i binom{i}{j}g(j)
]
那么反演一下:
[g(i)=sum_{j=0}^i(-1)^{i-j} binom{i}{j}f(j)\
g(i)=sum_{j=0}^i(-1)^{i-j} binom{i}{j}j^n
]
根据定义可得 (frac{1}{m!}g(m)=egin{Bmatrix}n\ mend{Bmatrix})
那么更常用的一种写法是
[egin{Bmatrix}n\ iend{Bmatrix}=frac{1}{i!}sum_{j=0}^ifrac{(-1)^{i-j}j^ni!}{j!(i-j)!}\
egin{Bmatrix}n\ iend{Bmatrix}=sum_{j=0}^ifrac{(-1)^{i-j}j^n}{j!(i-j)!}
]
一种技巧就是设 (f_i=frac{(-1)^i}{i!}),(g_i=frac{i^n}{i!}),然后
[egin{Bmatrix}n\ mend{Bmatrix}=sum_{i=0}^mf_i*g_{m-i}
]
(NTT) 优化一下。
有一个应用:
[m^n=sum_{i=0}^{min(n,m)}egin{Bmatrix}n\ iend{Bmatrix}inom{m}{i}i!
]
证明:(m^n) 可以理解为 (n) 个物品放到 (m) 个不同的盒子里,而后面的式子意思就是枚举 (i) 个盒子有数,然后从 (m) 个盒子中选出 (i) 个进行全排列,意思是等价的。