斯特林(Stirling)数 的妙用"/>
[学习笔记]浅析 第二类斯特林(Stirling)数 的妙用
一、概念及递推
第二类斯特林数:把 n n 个元素分成
递推式:考察第 n n 个元素是否单独属于一个集合。
如果单独属于一个集合,那么剩下的
如果不单独属于一个集合,那么剩下的 n−1 n − 1 个元素有 {n−1m} { n − 1 m } 种划分方法,第 n n 个元素可以插入这
所以得出第二类斯特林数的递推式:
{nm}={n−1m−1}+m×{n−1m} { n m } = { n − 1 m − 1 } + m × { n − 1 m }
边界 {00}=1 { 0 0 } = 1 。
二、通项公式
可以用容斥的方法求第二类斯特林数。
先考虑无序转有序,设 T(n,m) T ( n , m ) 表示把 n n 个元素划分成
注意这里「有序」的概念:集合的顺序有序,而集合内的元素无序。
如 {1,3}{2,4,5} { 1 , 3 } { 2 , 4 , 5 } 和 {3,1}{5,4,2} { 3 , 1 } { 5 , 4 , 2 } 是同一种方案,
而 {1,3}{2,4,5} { 1 , 3 } { 2 , 4 , 5 } 和 {2,4,5}{1,3} { 2 , 4 , 5 } { 1 , 3 } 不是同一方案。
这时候有:
还是不
如果不要求「非空」,那么可以把问题成对于每个元素,都为这个元素选取一个它所属的集合。方案数为:
mn m n
再加上「非空」这一条件,可以考虑容斥,枚举 {1,2,...,m} { 1 , 2 , . . . , m } 的一个子集 S S ,强制
T(n,m)=∑S⊂{1,2,...m}(−1)|S|×(m−|S|)n T ( n , m ) = ∑ S ⊂ { 1 , 2 , . . . m } ( − 1 ) | S | × ( m − | S | ) n
利用上组合数,把枚举 S S 改为枚举
T(n,m)=∑i=0m(−1)i×(m−i)n×(mi) T ( n , m ) = ∑ i = 0 m ( − 1 ) i × ( m − i ) n × ( m i )
故
{nm}=1m!∑i=0m(−1)i×(m−i)n×(mi) { n m } = 1 m ! ∑ i = 0 m ( − 1 ) i × ( m − i ) n × ( m i )
三、形如 nm n m 的式子的分解
先给出公式:
可以从组合数学的角度分析。
首先, {mi}×i!=T(m,i) { m i } × i ! = T ( m , i ) :
nm=∑i=0∞T(m,i)×(ni) n m = ∑ i = 0 ∞ T ( m , i ) × ( n i )
这就是在 n n 个集合中选出一些集合,用
进一步进行转化——用 m m 个元素填充
因此方案数为 nm n m !
四、应用
给定一个 n n 个点
显然拓扑排序,但直接求解有些困难,不妨转化下 lk l k :
看到 0≤k≤500 0 ≤ k ≤ 500 的范围,将每个 i i 分开考虑。
定义
根据组合数的递推公式,可以得出转移:对于一条边 <u,v> < u , v > <script id="MathJax-Element-4681" type="math/tex"> </script> ,
f[v][i]+=f[u][i]+f[u][i−1] f [ v ] [ i ] + = f [ u ] [ i ] + f [ u ] [ i − 1 ]
1 1 到
∑i=0k{ki}×i!×f[u][i] ∑ i = 0 k { k i } × i ! × f [ u ] [ i ]
五、In A Word
第二类斯特林数的妙用就是转换形如 nm n m 的式子。
更多推荐
[学习笔记]浅析 第二类斯特林(Stirling)数 的妙用
发布评论