zoukankan      html  css  js  c++  java
  • 斯特林数

    定义

    第一类斯特林数(Stirling Number of the First Kind)(n) 个数分成 (k) 个轮换的方案数,记为

    [{nrack k} ]

    第二类斯特林数(Stirling Number of the Second Kind)(n) 个数分成 (k) 个非空子集的方案数,记为

    [nrace k ]

    基本性质

    注意到,一个子集对应至少一个轮换。所以很明显有

    [{nrack k}ge{nrace k} ]

    (k=n,n-1) 时取到等号,此时有 ({nrack n}={nrace n}=1,{nrack n-1}={nrace n-1}={nchoose 2})
    从置换的角度考虑第一类斯特林数。众所周知,任意一个置换可分解为若干轮换的乘积,并与一个排列一一对应,于是对所有轮换求和得到

    [sum_{k=0}^n{nrack k}=n! ]

    递推公式

    从组合意义来考虑。
    先看第一类。最后一个数要么独立组成一个轮换,要么插入之前的轮换中,后者有 (n-1) 种方法,于是有

    [{nrack k}=(n-1){n-1rack k}+{n-1rack k-1} ]

    第二类也是一样的推法,区别是插入之前的子集中只有子集个数种方法,即

    [{nrace k}=k{n-1race k}+{n-1race k-1} ]

    用上面的推法可知:

    [{nrace 2}=2^{n-1}-1 ]

    下面再来推推第二类斯特林数的通项公式。我们使用容斥原理,枚举有多少个集合是空的,得到

    [{nrace m}=frac{1}{m!}sum_{i=0}^m(-1)^i{mchoose i}(m-i)^n ]

    最后要除以 (m!) 是因为集合是无序的,不除的是有序的。

    阶乘幂的互化

    常幂与下降幂的转化:

    [n^m=sum_{i=0}^m{nchoose i}{mrace i}i!=sum_{i=0}^m{mrace i}n^{underline{i}} ]

    考虑组合意义,左边是将 (m) 个球放入 (n) 个盒子中,右边相当于枚举有多少个盒子非空,由于斯特林数是无序的,要乘 (i!) 变成有序的。
    上升幂与常幂的转化:

    [n^{overline{m}} = sum_{i=0}^m { m rack i } n^i ]

    这个式子组合意义不好解释,我们考虑归纳法。(m=1) 显然成立,考虑现在 (m-1) 成立,于是有:

    [egin{aligned}n^{overline{m}} &= (n+m-1)n^{overline{m-1}}\ &= (n+m-1)sum_{i=0}^{m-1} { m-1 rack i } n^i \ &= sum_{i=0}^{m-1} { m-1 rack i } n^{i+1}+sum_{i=0}^{m-1}(m-1) { m-1 rack i } n^i \ &= sum_{i=1}^{m} { m-1 rack i-1 } n^{i}+sum_{i=0}^{m-1}(m-1) { m-1 rack i } n^i \ &= sum_{i=0}^mleft({ m-1 rack i-1 }+(m-1) { m-1 rack i } ight)n^i \ &= sum_{i=0}^m{ m rack i }n^iend{aligned}]

    最后面的边界问题,由于 (0) 项与 (m) 项边界都溢出了,我们按照 (0) 处理。

    斯特林反演

    [f(n)=sum_{k=0}^n{nrace k}g(k)iff g(n)=sum_{k=0}^n(-1)^{n-k}{nrack k}f(k) \ f(n)=sum_{k=0}^n{nrack k}g(k)iff g(n)=sum_{k=0}^n(-1)^{n-k}{nrace k}f(k)]

    欲证明这个式子,先证明若干引理。

    [x^{underline{n}}=(-1)^n(-x)^{overline{n}},x^{overline{n}}=(-1)^n(-x)^{underline{n}} ]

    以上式子是显然的。
    反转公式:

    [sum_{k=m}^n(-1)^{n-k}{nrack k}{krace m}=sum_{k=m}^n(-1)^{n-k}{nrace k}{krack m}=[m=n] ]

    反转公式的证明:

    [egin{aligned}n^m &= sum_{k=0}^m{mrace k}n^{underline{k}} \ &= sum_{k=0}^m{mrace k}(-1)^k(-n)^{overline{k}} \ &= sum_{k=0}^m{mrace k}sum_{j=0}^k(-1)^j(-1)^{k-j}{krack j}(-n)^j \ &= sum_{j=0}^mn^jsum_{k=j}^m{mrace k}{krack j}(-1)^{k-j}end{aligned}]

    上式可以看作是关于 (n) 的多项式,那么显然必须在 (j=m) 时后面的项值为一,否则为零,于是

    [sum_{k=j}^m{mrace k}{krack j}(-1)^{k-j}=sum_{k=j}^m{mrace k}{krack j}(-1)^{m-k}=[j=m] ]

    得证。
    反转公式的另一种形式也是一样的推法,这里不再赘述。
    现在来证明斯特林反演,同样我们只证明一种形式:
    (g(n)=sum_{i=0}^n(-1)^{n-i}{nrack i}f(i)),则

    [egin{aligned}f(n) &= sum_{i=0}^n[i=n]f(i) \ &= sum_{i=0}^nf(i)sum_{j=i}^n{nrace j}{jrack i}(-1)^{j-i} \ &= sum_{j=0}^n{nrace j}sum_{i=0}^jf(i){jrack i}(-1)^{j-i} \ &= sum_{i=0}^n{nrace i}g(i)end{aligned}]

  • 相关阅读:
    安卓笔记:Android 界面设计指南——人人都是产品经理就是个玩笑话
    Windows CMD 命令
    安卓开发:dex 文件反编译
    VBA 学习笔记 运算符
    工商管理同等学力申硕全国统一考试资料整理
    VBA 学习笔记 判断语句、循环
    VBA 学习笔记 日期时间函数
    安卓自动领水果福气
    【合集】人大商学院同等学力工商管理
    安卓笔记:进度设计原则和常见错误
  • 原文地址:https://www.cnblogs.com/wzzyr24/p/13383055.html
Copyright © 2011-2022 走看看