斯特林反演学习小记

我们知道斯特林数和集合有着密不可分的联系,所以斯特林反演一般就用于集合划分上。

斯特林反演是用来求容斥系数的。

栗子:

bzoj4671: 异或图

直接做很难做。

枚举一个集合划分,对于同一集合的点,不一定要求连通,但是不同集合的点一定不连通。

这个的方案数是很好算的。

我们给它个容斥系数,设为 f(S) f ( S )

对于一个确切的图,假设它有m个连通块,显然当m=1时它才是有用的。

然后你在容斥的时候不是算了个不明不白的东西吗?
你要你乱算的东西里包含这个图,则你集合划分的时候一定是合并了这个图的一些联通块

因此被计算次数为 mi=1Sm,if(i) ∑ i = 1 m S m , i ∗ f ( i )

等式即 [m=1]=mi=1Sm,if(i) [ m = 1 ] = ∑ i = 1 m S m , i ∗ f ( i )

斯特林反演:

若有 f(n)=ni=1Sn,ig(i) f ( n ) = ∑ i = 1 n S n , i ∗ g ( i )

g(n)=ni=1(1)nisn,if[i] g ( n ) = ∑ i = 1 n ( − 1 ) n − i ∗ s n , i ∗ f [ i ]

可以通过结合第一类、第二类斯特林数和下降幂有关的那一部分得到以上的证明。

返回原题:

f(n)=ni=1(1)nisn,i[i=1] f ( n ) = ∑ i = 1 n ( − 1 ) n − i ∗ s n , i ∗ [ i = 1 ]
=(1)n1(n1)! = ( − 1 ) n − 1 ∗ ( n − 1 ) !

很多是否集合划分的容斥系数都是这个,因为 g(m) g ( m ) 一般都是 [m=1] [ m = 1 ]

你可能感兴趣的:(容斥原理)