• Stirling数入门


    第一类Stirling数

    定义

    $$
    egin{aligned}
    (x)_n & =x(x-1)...(x-n+1)\
    &= s(n, 0) + s(n,1)x +..+s(n,n)x^n\
    end{aligned}$$

    例如,$n=3$ 时,

    $(x)3 = x(x-1)(x-2)$

    $(x)3 = x^0 + 2x -3x^2 + x^3$

    于是 $s(3,0)=0,s(3,1)=2,s(3,2)=-3,s(3,3)=1$

    有符号斯特林数和无符号斯特林数有如下关系:

    $$s(n, k) = (-1)^{n-k}egin{bmatrix} n\ k end{bmatrix}$$

    下文的 $s(n, k)$ 都是指的无符号的了。

    理解

    $n$ 个人围着 $k$ 个相同圆桌,每个桌子非空的方案数就是 $s(n, k)$。

    也就是将 $n$ 个不同元素分成 $k$ 组,每组中的元素再进行圆排列的方法数。

    例如,$s(4, 2) = 11$

    1. (A,B)(C,D)
    2. (A,C)(B,D)
    3. (A,D)(B,C)
    4. (A)(B,C,D)
    5. (A)(B,D,C)
    6. (B)(A,C,D)
    7. (B)(A,D,C)
    8. (C)(A,B,D)
    9. (C)(A,D,B)
    10. (D)(A,B,C)
    11. (D)(A,C,B)

    易得一个递推式,

    人a独占一桌:$s(n-1, k-1)$

    人a不独占一桌:先将 $n-1$ 个人安排好,再将a安排到任一人的右边,$(n-1)*s(n-1, k)$

    所以,$s(n, k) = s(n-1. k-1) + (n-1)*s(n-1, k)$

    第二类Stirling数

    定义

     与第一类Stirling数类似,可以用下降阶乘幂定义:

    $$x^n = sum_{k=0}^ns(n, k)(x)_k$$

     例如,$n=3$ 时

    $$x^3 = s(3, 0)(x)_0 + s(3,1)(x)_1 + s(3,2)(x)_2+s(3,3)(x)_3$$

    即 $x^3 = s(3, 0) + s(3,1)x + s(3,2)x(x-1)+s(3,3)x(x-1)(x-2)$

    开并合并同类项,得

    $$x^3 = s(3,0) + [(3,1)-s(3,2)+2s(3,3)]x + [s(3,2)-3s(3,3)]x^2 + s(3,3)x^3$$

    对比系数,解得

    $s(3,0)=0, s(3,1)=1,s(3,2)=3,s(3,3)=1$

    理解

    将含有 $n$ 个元素的集合拆分成 $k$ 个非空子集的方法数就是第二类Stirling数。

    也就是将 $n$ 个有区别的球放到 $k$ 个盒子里的方案数。

    例如,$s(4,2)=7$(自行前前面对比),

    1. (A,B)(C,D)
    2. (A,C)(B,D)
    3. (A,D)(B,C)
    4. (A)(B,C,D)
    5. (B)(A,C,D)
    6. (C)(A,B,D)
    7. (D)(A,B,C)

    也与第一类Stirling数有类似的递推式(初始条件都相同):

    $$s(n, m) = s(n-1, m-1) + m*s(n-1, m)$$

    证:

    等价于将 $n$ 个有区别的球放到 $k$ 个盒子里的方案数,

    若球a独占一盒,$s(n-1, m-1)$

    若球a不独占一盒,先将剩下的 $n-1$ 个放入 $m$ 个盒子中且不允许有空盒,再将球a放入其中一盒,$ms(n-1, m)$.

    补充:

    参考链接:

    1. https://blog.csdn.net/doyouseeman/article/details/50876786

    2. https://zh.wikipedia.org/wiki/斯特林数

  • 相关阅读:
    Linux环境下配置Google Test、TBB、OpenMP和OpenCV
    构建一个真实的应用电子商务SportsStore(六)
    编写简单的c运行库(一)
    构建一个真实的应用电子商务SportsStore(七)
    Entity Framework性能测试
    C++在VS下创建、调用dll
    Contextfree Grammar的编译器设计和实现
    XP方法概述
    项目代码风格要求
    WCF学习 第三天 事务的使用
  • 原文地址:https://www.cnblogs.com/lfri/p/11563073.html
Copyright © 2020-2023  润新知