摘要:前言反反复复十余遍了吧,每次点开斯特林反演的学习博客,看了几行式子又晕乎乎地点击关掉。这里仅介绍定义、性质等基础的理论知识,至于如何快速求解斯特林数之类的具体实现可能会另开一篇博客吧。第一类斯特林数定义第一类斯特林数表示个有区别的小球拼成个环(无空)的方案数。我们可以把第一类斯特林数中的环理解成置换,全排列和斯特林数就一一对应了。自然数幂和第二类斯特林数和自然数幂和有着重要关系。
前言
反反复复十余遍了吧,每次点开斯特林反演的学习博客,看了几行式子又晕乎乎地点击关掉。
但到了现在,我已经不想再退缩了。
这里仅介绍定义、性质等基础的理论知识,至于如何快速求解斯特林数之类的具体实现可能会另开一篇博客吧。
第一类斯特林数
定义
第一类斯特林数(S_1(n,m))表示(n)个有区别的小球拼成(m)个环(无空)的方案数。
递推式
[S_1(n,m)=S_1(n-1,m-1)+(n-1) imes S_1(n-1,m) ]
无非是两种情况:
- 新增一个环。
- 加入到原先的一个环中。注意放在不同球之前是不同的,因此系数是(n-1)。
重要性质(1)
[n!=sum_{i=0}^nS_1(n,i) ]
考虑一个排列可以分为若干置换环。
我们可以把第一类斯特林数中的环理解成置换,全排列和斯特林数就一一对应了。
重要性质(2)
[x^{underline{n}}=sum_{i=0}^nS_1(n,i) imes (-1)^{n-i} imes x^i\ x^{ar{n}}=sum_{i=0}^n S_1(n,i) imes x^i ]
考虑归纳法证明,这里以第一个式子为例:
[egin{align} x^{underline{n+1}}&=(x-n)x^{underline{n}}\ &=xsum_{i=0}^nS_1(n,i) imes(-1)^{n-i} imes x^i-nsum_{i=0}^nS_1(n,i) imes (-1)^{n-i} imes x^i\ &=sum_{i=1}^{n+1}S_1(n,i-1) imes(-1)^{n-i+1}x^i+nsum_{i=0}^{n+1}S_1(n,i) imes(-1)^{n-i+1} imes x^i\ &=(sum_{i=1}^{n+1}(S_1(n,i-1)+n imes S_1(n,i)) imes(-1)^{(n+1)-i} imes x^i)+(S_1(n,0) imes(-1)^{n+1} imes x^0)\ &=sum_{i=0}^{n+1}S_1(n+1,i) imes(-1)^{(n+1)-i} imes x^i end{align} ]
第二类斯特林数
定义
第二类斯特林数(S_2(n,m))表示(n)个有区别的小球放入(m)个无区别的盒子(无空)的方案数。
递推式
[S_2(n,m)=S_2(n-1,m-1)+m imes S_2(n-1,m) ]
同样可以分成两种情况:
- 新增一个盒子。
- 加入到原先的一个盒子中。注意这就是和第一类斯特林数的区别了,它的系数是(m)。
重要性质
[m^n=sum_{i=0}^mS_2(n,i) imes i! imes C(m,i)=sum_{i=0}^mS_2(n,i) imes m^{underline{i}} ]
考虑(m^n)就是把(n)个有区别的小球放入(m)个有区别的盒子(可以为空)的方案数。
那么我们首先枚举非空盒子数(i),把(n)个球放入(i)个盒子中,最后给这些盒子标个号,就对应起来了。
组合表示
[S_2(m,n)=frac1{m!}sum_{k=0}^m(-1)^k imes C_{m,k} imes (m-k)^n ]
如果我们算入空箱子的情况,答案就是(frac{m^n}{n!})。
因此我们容斥,枚举(k)表示至少有多少空盒子。
但注意在这里的容斥过程中我们默认了盒子是不同的(因为这样好算),所以最好还要除以一个(frac1{m!})。
自然数幂和
第二类斯特林数和自然数幂和有着重要关系。
推一推式子:
[egin{align} sum_{i=0}^n i^k&=sum_{i=0}^nsum_{j=0}^kS_2(k,j) imes i^{underline{j}}\ &=sum_{j=0}^kS_2(k,j)sum_{i=0}^ni^{underline{j}}\ &=sum_{j=0}^kS_2(k,j)j!sum_{i=0}^nC_i^j\ &=sum_{j=0}^kS_2(k,j)j!C_{n+1}^{j+1}\ end{align} ]
斯特林反演
定义
[f(n)=sum_{k=0}^nS_2(n,k)g(k)Leftrightarrow g(n)=sum_{k=0}^n(-1)^{n-k}S_1(n,k)f(k) ]
所需性质
总结:
[x^{underline{n}}=sum_{i=0}^nS_1(n,i)(-1)^{n-i}x^i\ x^{ar{n}}=sum_{i=0}^nS_1(n,i)x^i\ m^n=sum_{i=0}^nS_2(n,i) imes m^{underline{i}} ]
补充:
[x^{underline{n}}=(-1)^n(-x)^{ar{n}}\ x^{ar{n}}=(-1)^n(-x)^{underline{n}} ]
前置:反转公式
[sum_{k=m}^n(-1)^{n-k}S_1(n,k)S_2(k,m)=[m=n]\ sum_{k=m}^n(-1)^{n-k}S_2(n,k)S_1(k,m)=[m=n] ]
反转公式(1):
[egin{align} m^{underline{n}}&=sum_{i=0}^nS_1(n,i)(-1)^{n-i}m^i\ &=sum_{i=0}^nS_1(n,i)(-1)^{n-i}sum_{j=0}^iS_2(i,j)m^{underline{j}}\ &=sum_{i=0}^nm^{underline{i}}sum_{j=i}^n(-1)^{n-j}S_1(n,j)S_2(j,i) end{align} ]
反转公式(2):
[egin{align} m^{n}&=sum_{i=0}^nS_2(n,i)m^{underline{i}}\ &=sum_{i=0}^nS_2(n,i)(-1)^i(-m)^{ar{i}}\ &=sum_{i=0}^nS_2(n,i)(-1)^isum_{j=0}^iS_1(i,j)(-m)^{j}\ &=sum_{i=0}^nm^{i}sum_{j=i}^n(-1)^{i-j}S_2(n,j)S_1(j,i) end{align} ]
斯特林反演证明
已知:
[g(n)=sum_{k=0}^n(-1)^{n-k}S_1(n,k)f(k) ]
证明:
[egin{align} f(n)&=sum_{k=0}[k=n]f(k)\ &=sum_{k=0}^nsum_{j=k}^nS_2(n,j)S_1(j,k)(-1)^{j-k}f(k)\ &=sum_{k=0}^nS_2(n,k)sum_{j=0}^k(-1)^{k-j}S_1(k,j)f(j)\ &=sum_{k=0}^nS_2(n,k)g(k) end{align} ]
后记
例题什么的,先坑着吧。。。