斯特林数(数论)

斯特林数:stirling

概念:

1、第一类斯特林数:把1~n排列成k个非空循环的方案数,用小写s(n,k)或[n k]表示

2、第二类斯特林数:将1~n排成k个非空集合的方案数,用大写S(n,k)或{n,k}表示

第一类斯特林数:

递推:

S(n,k)=s(n-1,k-1)+(n-1)\times s(n-1,k)

边界s(0,0)=1,s(n,k)=0 (n<k)

组合意义:考虑加入n时,可以自己构成环,后者插入一个之前已有的数的后面,复杂度O(nk)

- 与上升幂、下降幂的关系:

上升幂定义:

$$
\ x^ \bar n=x \times (x+1) \times.....\times(x+n-1)
$$

是一个多项式,有

$$
x^ \bar n=\sum_{k=1}^{n}s(n,k)\times x^k
$$

组合意义:考虑把1~n排成k个非空循环序列,然后将每个环染成[1,x]中的某种颜色,等式右边就是枚举环的数量,然后每个环任意染色,等式左边相当与考虑每次加入一个新点n,若构成一个新环,则有x种染色方法,否则插入1个之前已有的数的后面继承其颜色,那么n个点的总方案数就是上升幂

下降幂定义:

$$
x^\bar n=x(x-1)....(x-n+1)
$$

是一个多项式,有:

$$
\ x^\bar n=\sum_{k=1}^{n} \left(-1\right)^ \left(n-k\right)\times s(n,k)\times x^k
$$

  • 性质:

    $$
    s(n,1)=(n-1)!
    $$

     

    $$
    s(n,2)=(n-1)!\times\sum_{i=1}^{n-1}\frac{1}{i}
    $$

     

    $$
    n!=\sum_{k=0}^{n}s(n,k)
    $$

     

    最后一条的组合意义:任意1个排列可以看成一个置换,那么枚举置换中环的数量然后求和就是全排列

s(n,k)k=0k=1k=2k=3k=4k=5k=6
n=01
n=101
n=2011
n=30231
n=4061161
n=50245035101
n=6012027422585151

第二类斯特林数:S(n,k)

递推:

$$
S(n,k)=S(n-1,k-1)+k\times S(n-1,k)
$$

边界S(0,0)=1,S(n,k) = 0(n<k)

组合意义:考虑加入n时,可以自己构成一个集合,或者插入一个1之前已有的集合,复杂度O(nk)。第二类斯特林数也可以用小球模型来描述,其对应:n个不同的球,放进k个相同的盒子,不能有空盒子的方案数

  • 与下降幂之间的关系:

    $$
    x^n=\sum_{k=0}^{n}\times x^\underline k
    $$

     

    组合意义:给1~n每个数染[1,x]中的某种颜色,方案数为左边x^n右边枚举一共有k种不同的颜色,把1~n分成k个集合(S(n,k))然后每个集合一次染色

  • 通项公式(容斥):

    $$
    S(n.k)=\frac{1}{k!}\sum_{i=0}^{k}\times s(n,i)\times\left(n-k\right)^n
    $$

     

    组合意义:考虑“n个不同的球,放进k个不同的盒子,可以有空盒子的方案数”,其显然等于k^n。若不能有空盒子,则枚举空盒子的数量i然后容斥,即“n个不同的球,放进k个不同盒子,有至少i个空盒子”的方案数=s(n,i)*(k-i)^n,容斥系数为(-1)^i,最后再除以k!时把盒子不同转化为盒子相同,利用这个容斥可以实现O(nlogn)计算一个S(n,k)

    • 与自然数幂和的关系

      定义:

      $$
      F(n)=\sum_{i=1}^{n}i^k
      $$

       

      暴力计算时间复杂度O(nlogk)

    • 使用第二类stiring数转化为下降幂:

      $$
      F(n)=\sum_{i=1}^{n}\sum_{j=0}^{k}S\{k,j\}=\sum_{i=1}^{n}\sum_{j=0}^{k}S\{k,j\}j!s(i,j)
      $$

       

      $$
      F(n)=\sum_{j=0}^{k}j!\sum_{i=j}^{n}s(i,j)
      $$

       

      这个式子和n相关的杨辉三角上一列求和,等于右下角

      $$
      F(n)=\sum_{j=0}^{k}S\{k,j\}j!s(n+1,j+1)
      $$

       

      这个式子仅枚举k如果O(k^2)预处理S(k,j)那么可以在O(klogk)时间求解上F(n)

S(n,k)k=0k=1k=2k=3k=4k=5k=6
n=01
n=101
n=2011
n=30131
n=401761
n=5011525101
n=601319065151

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值