联合省选的D1T2放出了一道裸的斯特林数,幸亏之前推过第二类斯特林数求自然数幂和,所以很幸运地切了。
这次比赛之后dyp和gmh77疯狂学斯特林数,从此免疫。
惊得我也系统地学一下斯特林数做做样子。
概念
第一类斯特林数:记为
s
(
m
,
n
)
s(m,n)
s(m,n)(也可以用中括号表示),组合意义为
m
m
m个数形成
n
n
n个圆排列的方案数。
有个比较系统的定义:
s
(
m
,
n
)
=
[
x
n
]
∏
i
=
0
m
−
1
(
x
+
i
)
s(m,n)=[x^n]\prod_{i=0}^{m-1}(x+i)
s(m,n)=[xn]∏i=0m−1(x+i)
性质:
s
(
m
,
n
)
=
(
m
−
1
)
∗
s
(
m
−
1
,
n
)
+
s
(
m
−
1
,
n
−
1
)
s(m,n)=(m-1)*s(m-1,n)+s(m-1,n-1)
s(m,n)=(m−1)∗s(m−1,n)+s(m−1,n−1)
组合意义可证。
∑
k
=
0
n
s
(
n
,
k
)
=
n
!
\sum_{k=0}^ns(n,k)=n!
∑k=0ns(n,k)=n!
每一种排列,对应着一种轮换。意思记排列为
p
p
p,
i
i
i向
p
i
p_i
pi连边,这样就会形成若干个环。
第二类斯特林数:记为
S
(
m
,
n
)
S(m,n)
S(m,n)(也可以用大括号表示),组合意义为
m
m
m个数形成
n
n
n个集合的方案数。
性质:
S
(
m
,
n
)
=
n
∗
S
(
m
−
1
,
n
)
+
S
(
m
−
1
,
n
−
1
)
S(m,n)=n*S(m-1,n)+S(m-1,n-1)
S(m,n)=n∗S(m−1,n)+S(m−1,n−1)
组合意义可证。
S
(
m
,
n
)
=
1
n
!
∑
k
=
0
n
(
−
1
)
k
C
(
n
,
k
)
(
n
−
k
)
m
S(m,n)=\frac{1}{n!}\sum_{k=0}^{n}(-1)^kC(n,k)(n-k)^m
S(m,n)=n!1∑k=0n(−1)kC(n,k)(n−k)m
反演得到(下面有提及)。
∑
k
=
0
n
S
(
n
,
k
)
=
B
n
\sum_{k=0}^nS(n,k)=B_n
∑k=0nS(n,k)=Bn
B
B
B表示贝尔数。
有符号斯特林数:顾名思义就是有符号的斯特林数。
s
s
(
m
,
n
)
=
−
(
m
−
1
)
∗
s
s
(
m
−
1
,
n
)
+
s
s
(
m
−
1
,
n
−
1
)
s_s(m,n)=-(m-1)*s_s(m-1,n)+s_s(m-1,n-1)
ss(m,n)=−(m−1)∗ss(m−1,n)+ss(m−1,n−1)
S
s
(
m
,
n
)
=
−
n
∗
S
s
(
m
−
1
,
n
)
+
S
s
(
m
−
1
,
n
−
1
)
S_s(m,n)=-n*S_s(m-1,n)+S_s(m-1,n-1)
Ss(m,n)=−n∗Ss(m−1,n)+Ss(m−1,n−1)
下标 s s s意思为“signed”
打个表出来可以发现
s
s
(
m
,
n
)
=
(
−
1
)
m
−
n
s
(
m
,
n
)
s_s(m,n)=(-1)^{m-n}s(m,n)
ss(m,n)=(−1)m−ns(m,n)
S
s
(
m
,
n
)
=
(
−
1
)
m
−
n
S
(
m
,
n
)
S_s(m,n)=(-1)^{m-n}S(m,n)
Ss(m,n)=(−1)m−nS(m,n)
性质
s
(
m
,
n
)
≥
S
(
m
,
n
)
s(m,n)\geq S(m,n)
s(m,n)≥S(m,n)
排列数大于等于集合数。
普通幂、上升幂、下降幂相关:(这个在推式子的时候经常能够用到!)
x
n
=
∑
k
=
0
n
S
(
n
,
k
)
x
k
‾
x^n=\sum_{k=0}^nS(n,k)x^{\underline k}
xn=∑k=0nS(n,k)xk
x
n
=
∑
k
=
0
n
S
(
n
,
k
)
(
−
1
)
n
−
k
x
k
‾
=
∑
k
=
0
n
S
s
(
n
,
k
)
x
k
‾
x^n=\sum_{k=0}^nS(n,k)(-1)^{n-k}x^{\overline k}=\sum_{k=0}^nS_s(n,k)x^{\overline k}
xn=∑k=0nS(n,k)(−1)n−kxk=∑k=0nSs(n,k)xk
x
n
‾
=
∑
k
=
0
n
s
(
n
,
k
)
x
k
x^{\overline n}=\sum_{k=0}^ns(n,k)x^k
xn=∑k=0ns(n,k)xk
x
n
‾
=
∑
k
=
0
n
s
(
n
,
k
)
(
−
1
)
n
−
k
x
k
=
∑
k
=
0
n
s
s
(
n
,
k
)
x
k
x^{\underline n}=\sum_{k=0}^ns(n,k)(-1)^{n-k}x^k=\sum_{k=0}^ns_s(n,k)x^k
xn=∑k=0ns(n,k)(−1)n−kxk=∑k=0nss(n,k)xk
具体证明嘛,各种归纳,各种组合意义。
快速求斯特林数
第一类斯特林数:
把定义式搬下来:
s
(
m
,
n
)
=
[
x
n
]
∏
i
=
0
m
−
1
(
x
+
i
)
s(m,n)=[x^n]\prod_{i=0}^{m-1}(x+i)
s(m,n)=[xn]∏i=0m−1(x+i)
记
s
m
(
x
)
=
∏
i
=
0
m
−
1
(
x
+
i
)
s_m(x)=\prod_{i=0}^{m-1}(x+i)
sm(x)=∏i=0m−1(x+i)
考虑倍增求这个东西。从
s
m
(
x
)
s_m(x)
sm(x)推到
s
2
m
(
x
)
s_{2m}(x)
s2m(x)时:
s
2
m
(
x
)
=
s
m
(
x
)
s
m
(
x
+
m
)
s_{2m}(x)=s_{m}(x)s_m(x+m)
s2m(x)=sm(x)sm(x+m)
快速求出
s
m
(
x
+
m
)
s_m(x+m)
sm(x+m)。设
s
m
(
x
)
=
∑
i
=
0
m
s
m
,
i
x
i
s_m(x)=\sum_{i=0}^ms_{m,i}x^i
sm(x)=∑i=0msm,ixi。之前已经求出
s
m
,
i
s_{m,i}
sm,i。
s
m
(
x
+
m
)
=
∑
i
=
0
m
s
m
,
i
(
x
+
m
)
i
s_m(x+m)=\sum_{i=0}^ms_{m,i}(x+m)^i
sm(x+m)=∑i=0msm,i(x+m)i
二项式展开一下,推一波式子,就可以发现一个卷积。
于是计算
s
m
(
x
+
m
)
s_m(x+m)
sm(x+m)的时间复杂度是
O
(
m
lg
m
)
O(m\lg m)
O(mlgm)的。
由于
m
m
m是两倍两倍地扩大,所以总的时间复杂度也是
O
(
m
lg
m
)
O(m \lg m)
O(mlgm)。
第二类斯特林数:
把上面那个普通幂转下降幂的式子搬下来,简单反演一下,得到:
n
!
S
(
m
,
n
)
=
∑
k
=
0
n
(
−
1
)
k
C
(
n
,
k
)
(
n
−
k
)
m
n!S(m,n)=\sum_{k=0}^{n}(-1)^kC(n,k)(n-k)^m
n!S(m,n)=∑k=0n(−1)kC(n,k)(n−k)m
把后面的那个组合数拆开,可以发现这是个很明显的卷积形式。
时间复杂度
O
(
n
lg
n
)
O(n \lg n)
O(nlgn)
斯特林反演
f
(
n
)
=
∑
k
=
0
n
S
(
n
,
k
)
g
(
k
)
⟺
g
(
n
)
=
∑
k
=
0
n
(
−
1
)
n
−
k
s
(
n
,
k
)
f
(
k
)
f(n)=\sum_{k=0}^n S(n,k)g(k) \Longleftrightarrow g(n)=\sum_{k=0}^n(-1)^{n-k}s(n,k)f(k)
f(n)=∑k=0nS(n,k)g(k)⟺g(n)=∑k=0n(−1)n−ks(n,k)f(k)
有个叫反转公式的东西:
∑
k
s
(
n
,
k
)
S
(
k
,
m
)
(
−
1
)
n
−
k
=
[
m
=
n
]
\sum_ks(n,k)S(k,m)(-1)^{n-k}=[m=n]
∑ks(n,k)S(k,m)(−1)n−k=[m=n]
∑
k
S
(
n
,
k
)
s
(
k
,
m
)
(
−
1
)
n
−
k
=
[
m
=
n
]
\sum_kS(n,k)s(k,m)(-1)^{n-k}=[m=n]
∑kS(n,k)s(k,m)(−1)n−k=[m=n]
关于这个怎么证明……最严谨的方法应该是归纳。
写公式太麻烦,直接口胡一下证明的思路(挺好推的)。
比如上面这条式子: ∑ k s ( n , k ) S ( k , m ) ( − 1 ) n − k = [ m = n ] \sum_ks(n,k)S(k,m)(-1)^{n-k}=[m=n] ∑ks(n,k)S(k,m)(−1)n−k=[m=n]
先将 s ( n , k ) s(n,k) s(n,k)用递推式拆开,展开一下。
再将 S ( k , m ) S(k,m) S(k,m)用递推式拆开,展开一下。
照着这么做就可以很自然地归纳证明出来了。
另一条式子也可以类似地推出来。
看了一些博客,有些博客里面写了一种不是很严谨的证明方法:
具体就是取一个普通幂 n m n^m nm,将它先用第二类斯特林数表示成下降幂多项式,然后将这个下降幂用第一类斯特林数表示成普通幂。
推推式子就会得到这样: n m = ∑ j = 0 m n j ∑ k = j m S ( m , k ) s ( k , j ) ( − 1 ) j − k n^m=\sum_{j=0}^mn^j\sum_{k=j}^mS(m,k)s(k,j)(-1)^{j-k} nm=∑j=0mnj∑k=jmS(m,k)s(k,j)(−1)j−k
然后谁告诉我,这怎么就能直接得到 ∑ k = j m S ( m , k ) s ( k , j ) ( − 1 ) j − k = [ j = m ] \sum_{k=j}^mS(m,k)s(k,j)(-1)^{j-k}=[j=m] ∑k=jmS(m,k)s(k,j)(−1)j−k=[j=m]了???
这种方法只能解释假设反转公式成立,这个东西也成立;但不能反过来推啊……
如果设矩阵
F
i
,
j
=
S
(
i
,
j
)
F_{i,j}=S(i,j)
Fi,j=S(i,j),
G
i
,
j
=
(
−
1
)
i
−
j
s
(
i
,
j
)
G_{i,j}=(-1)^{i-j}s(i,j)
Gi,j=(−1)i−js(i,j)
(或者
F
i
,
j
=
s
(
i
,
j
)
F_{i,j}=s(i,j)
Fi,j=s(i,j),
G
i
,
j
=
(
−
1
)
i
−
j
S
(
i
,
j
)
G_{i,j}=(-1)^{i-j}S(i,j)
Gi,j=(−1)i−jS(i,j))
不难发现
F
∗
G
=
E
F*G=E
F∗G=E,即
F
F
F和
G
G
G互逆。
拉赫数(第三类斯特林数?)
似乎只有维基上略有提及,所以不够详细请见谅。
有错误请指出。
无符号拉赫数:
上升幂和下降幂定义:
x
n
‾
=
∑
k
=
0
n
L
(
n
,
k
)
x
n
‾
x^{\overline n}=\sum_{k=0}^nL(n,k)x^{\underline n}
xn=∑k=0nL(n,k)xn
x
n
‾
=
∑
k
=
0
n
(
−
1
)
n
−
k
L
(
n
,
k
)
x
n
‾
x^{\underline n}=\sum_{k=0}^{n}(-1)^{n-k}L(n,k)x^{\overline n}
xn=∑k=0n(−1)n−kL(n,k)xn
递推式定义:
L
(
m
,
n
)
=
L
(
m
−
1
,
n
−
1
)
+
(
n
−
1
+
m
)
L
(
m
,
n
−
1
)
L(m,n)=L(m-1,n-1)+(n-1+m)L(m,n-1)
L(m,n)=L(m−1,n−1)+(n−1+m)L(m,n−1)
矩阵乘法定义:
L
(
m
,
n
)
=
∑
k
s
(
m
,
k
)
S
(
k
,
n
)
L(m,n)=\sum_k s(m,k)S(k,n)
L(m,n)=∑ks(m,k)S(k,n)
有符号拉赫数:
上升幂和下降幂定义:
x
n
‾
=
(
−
1
)
n
∑
k
=
0
n
L
s
(
n
,
k
)
x
n
‾
x^{\overline n}=(-1)^n\sum_{k=0}^nL_s(n,k)x^{\underline n}
xn=(−1)n∑k=0nLs(n,k)xn
x
n
‾
=
(
−
1
)
k
∑
k
=
0
n
L
s
(
n
,
k
)
x
n
‾
x^{\underline n}=(-1)^k\sum_{k=0}^{n}L_s(n,k)x^{\overline n}
xn=(−1)k∑k=0nLs(n,k)xn
L
s
(
m
,
n
)
=
(
−
1
)
m
L
(
m
,
n
)
L_s(m,n)=(-1)^mL(m,n)
Ls(m,n)=(−1)mL(m,n)
性质:
L
(
m
,
n
)
=
C
(
m
−
1
,
n
−
1
)
m
!
n
!
L(m,n)=C(m-1,n-1)\frac{m!}{n!}
L(m,n)=C(m−1,n−1)n!m!
归纳可证:
∑
k
L
s
(
m
,
k
)
L
s
(
k
,
n
)
=
∑
k
(
−
1
)
m
−
k
L
(
m
,
k
)
L
(
k
,
n
)
=
[
m
=
n
]
\sum_kL_s(m,k)L_s(k,n)=\sum_k(-1)^{m-k}L(m,k)L(k,n)=[m=n]
∑kLs(m,k)Ls(k,n)=∑k(−1)m−kL(m,k)L(k,n)=[m=n]
L
(
n
,
k
)
=
n
!
[
x
n
]
1
k
!
(
x
1
−
x
)
k
L(n,k)=n![x^n]\frac{1}{k!}(\frac{x}{1-x})^k
L(n,k)=n![xn]k!1(1−xx)k
参考资料
https://www.cnblogs.com/Wuweizheng/p/8638858.html
https://www.cnblogs.com/hchhch233/p/10016543.html
https://www.cnblogs.com/owenyu/p/6724661.html
https://www.cnblogs.com/gzy-cjoier/p/8426987.html
百度百科
维基百科