• 斯特林数入门


    众所周知,斯特林数有2种(不是斯大林数,英文名字叫string)

    这两种数没有什么关系,只是因为同一个人发现的所以叫同一个名字。


    1.定义:

    1.1第一类斯特林数:

    将n个数划分成m个数的圆排列的方案数。

    $egin{bmatrix}n\mend{bmatrix}=egin{bmatrix}n-1\m-1end{bmatrix}+(n-1)egin{bmatrix}n-1\mend{bmatrix}$

    意义:在新加入第n个元素的时候,有两种方案:新开一个圆排列,或者插入到之前的圆排列的任意位置之后。

    1.2第二类斯特林数:

    将n个数划分为m个集合的方案数。

    $egin{Bmatrix}n\mend{Bmatrix}=egin{Bmatrix}n-1\m-1end{Bmatrix}+megin{Bmatrix}n-1\mend{Bmatrix}$

    意义:和第一类斯特林数相似。在新加入第n个元素的时候,有两种方案:新开一个集合,或者加入到之前任意一个集合中。

    1.3斯特林数的求法:

    显然的,对于这两种斯特林数我们可以在$O(n^2)$的复杂度下求出。

    另外,对于第二类斯特林数我们可以考虑一种容斥求法。

    $egin{Bmatrix}n\mend{Bmatrix}=frac{1}{m!}sum_{i=0}^{m}(-1)^iC_m^i(m-i)^n$

    意义比较显然,我们规定m个集合中必定有i个集合是空的,其余的集合是不是空的无所谓。这样的方案数显然是$C_m^i(m-i)^n$

    虽然这样比较好求,但其余的集合是不是空的无所谓这一点会让我们算重,导致答案偏大,因此我们容斥一下。

    最后,由于涉及到了组合数所以这样得出的答案是有顺序的。所以除以顺序就好了。


    2.性质:

    2.1斯特林数普通幂转下降幂:

    先来看看公式:

    $i^k=sum_{j=0}^{k}egin{Bmatrix}k\jend{Bmatrix}inom{i}{j}j!$

    然后分析意义:

    $i^k$的组合意义就是k个不同的球放入i个不同的盒子的方案数。

    我们考虑如何求出这个方案数。

    首先枚举有j个盒子中被放入了小球。

    然后求出从i个盒子中选取j个放小球的方案数就是$C_i^j$

    然后求出k个不同小球放入j个相同盒子的方案数就是$egin{Bmatrix}k\jend{Bmatrix}$

    由于我们是放入不同的盒子,所以我们需要关注顺序,因此答案乘$j!$

    2.2斯特林数反演

    $f(n)=sum_{k=0}^{n}egin{Bmatrix}n\kend{Bmatrix}g(k)Leftrightarrow g(n)= sum_{k=0}^{n}(-1)^{n-k}egin{bmatrix}n\kend{bmatrix}f(k)$

    $f(n)=sum_{k=0}^{n}egin{bmatrix}n\kend{bmatrix}g(k)Leftrightarrow g(n)= sum_{k=0}^{n}(-1)^{n-k}egin{Bmatrix}n\kend{Bmatrix}f(k)$

  • 相关阅读:
    决策树
    训练/测试
    机器学习 标准差
    pandas01
    提交参数说明
    pandas_series02
    Yarn 模式
    词云图
    软件需求与分析课堂综合测试
    课堂测试10
  • 原文地址:https://www.cnblogs.com/kamimxr/p/13264908.html
Copyright © 2020-2023  润新知