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

    斯特林数

    定义:

    自行百度

    递推式:

    [egin{Bmatrix}n\k end{Bmatrix}=egin{Bmatrix}n-1\k-1end{Bmatrix}+kcdot egin{Bmatrix}n-1\k end{Bmatrix}\ egin{bmatrix}n\k end{bmatrix}=egin{bmatrix}n-1\k-1 end{bmatrix}+(n-1)cdot egin{bmatrix}n-1\k end{bmatrix} ]

    第二类斯特林数

    一个组合数意义清晰的式子:

    [displaystyle n^m=sum_{k=0}^megin {Bmatrix}m\k end{Bmatrix}C_n^kk!\ ]

    通过二项式反演的得到(这里是将m看作一个常数):

    [k!egin {Bmatrix}m\k end{Bmatrix}=sum_{i=0}^k(-1)^{k-i}C_k^ii^m\ ]

    上述式子用容斥原理也很好理解。

    我们还可以将上述的式子化为卷积的形式:

    [egin{align} egin {Bmatrix}m\k end{Bmatrix}&=frac{1}{k!}sum_{i=0}^k(-1)^{k-i}frac{k!}{i!(k-i)!}i^m\ &=sum_{i=0}^kfrac{(-1)^{k-i}}{(k-i)!}frac{i^m}{i!}\ end{align} ]

    第二类斯特林数的应用:

    【2011集训贾志鹏】Crash的文明世界

    【TJOI/HEOI2016】求和

    CF 932E Team Work


    斯特林数与阶乘幂之间的关系:

    第二类斯特林数与下降阶乘幂的关系:

    [C_n^kk!=n^{underline k}\ 所以:displaystyle n^m=sum_{k=0}^megin {Bmatrix}m\k end{Bmatrix}C_n^kk!=sum_{k=0}^megin {Bmatrix}m\k end{Bmatrix}n^{underline k}\ ]

    当然也有第一类斯特林数与上升阶乘幂的关系:

    [displaystyle x^{overline{n}}=sum_k egin{bmatrix}n\k end{bmatrix}x^k ]

    证明使用数学归纳法证明的:

    首先我们有((x+n-1)cdot x^k=x^{k+1}+(n-1)x^k)

    所以:

    [egin{align} displaystyle x^{overline{n}}&=(x+n-1)x^{overline{n-1}}\ &=(x+n-1)sum_k egin{bmatrix}n-1\k end{bmatrix}x^k\ &=sum_k egin{bmatrix}n-1\k end{bmatrix}x^{k+1}+sum_k egin{bmatrix}n-1\k end{bmatrix}x^k (n-1)\ &=sum_k egin{bmatrix}n-1\k-1 end{bmatrix}x^{k}+sum_k egin{bmatrix}n-1\k end{bmatrix}x^k (n-1)\ &=sum_k x^k (egin{bmatrix} n-1\k-1end{bmatrix}+(n-1)egin{bmatrix}n-1\kend{bmatrix})\ &=sum_k x^kegin{bmatrix}n\kend{bmatrix} end{align} ]


    斯特林反演:

    [displaystyle f(n)=sum_{k=0}^n egin{Bmatrix}n\k end{Bmatrix}g(k) Longleftrightarrow g(n)=sum_{k=0}^n(-1)^{n-k}egin {bmatrix} n\k end{bmatrix}f(k) ]

    首先我们要证明一个叫反转公式的东西:

    [displaystyle sum_{k=m}^n (-1)^{n-k}egin{bmatrix}n\kend{bmatrix} egin{Bmatrix}k\mend{Bmatrix}=[m=n]\ sum_{k=m}^n (-1)^{n-k}egin{Bmatrix}n\kend{Bmatrix} egin{bmatrix}k\mend{bmatrix}=[m=n] ]

    在这之前,我们先考虑如何建立上升阶乘幂与下降阶乘幂之间的关系。

    先给出结论:

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

    证明:

    [egin{align} (-1)^n(-x)^{overline{n}}&=(-1)^n(-x)(-x+1)...(-x+n-1)\ &=(-1)^n(-x)(-(x-1))...(-(x-n+1))\ &=x(x-1)...(x-n+1)=x^{underline{n}} end{align} ]

    对于(x^{overline{n}}=(-1)^n(-x)^{underline{n}})证明方法相同。

    [egin{align} displaystyle n^m&=sum_{k=0}^{m}egin{Bmatrix}m\kend{Bmatrix}n^{underline{k}}\ &=sum_{k=0}^{m}egin{Bmatrix}m\kend{Bmatrix}(-1)^k(-n)^{overline{k}} end{align} ]

    将下式带入:

    [displaystyle x^{overline{n}}=sum_k egin{bmatrix}n\k end{bmatrix}x^k ]

    得:

    [egin{align} displaystyle n^m&=sum_{k=0}^{m}egin{Bmatrix}m\kend{Bmatrix}(-1)^k(-n)^{overline{k}}\ &=sum_{k=0}^{m}egin{Bmatrix}m\kend{Bmatrix}(-1)^ksum_{j=0}^kegin{bmatrix}k\jend{bmatrix}(-n)^j\ &=sum_{j=0}^mn^jsum_{k=j}^{m}egin{Bmatrix}m\kend{Bmatrix}egin{bmatrix}k\jend{bmatrix}(-1)^{k-j} end{align} ]

    于是我们就得到了一个反转公式,另一个证明方法类似,反过来带入就可以了。

    [sum_{k=j}^megin{Bmatrix}m\kend{Bmatrix}egin{bmatrix}k\jend{bmatrix}(-1)^{k-j}=[j=m] ]

    然后我们就可以证明斯特林反演了:

    [egin{align} displaystyle 若满足g(n)&=sum_{j=0}^n(-1)^{n-j}egin{bmatrix}n\jend{bmatrix}f(j)\ 则f(n)&=sum_{j=0}^n[j==n]f(j)\ &=sum_{j=0}^nsum_{k=j}^negin{Bmatrix}n\kend{Bmatrix}egin{bmatrix}k\jend{bmatrix}(-1)^{k-j}f(j)\ &=sum_{k=0}^negin{Bmatrix}n\kend{Bmatrix}sum_{j=0}^k(-1)^{k-j}egin{bmatrix}k\jend{bmatrix}f(j)\ &=sum_{k=0}^negin{Bmatrix}n\kend{Bmatrix}g(k) end{align} ]

    例题:

    2018雅礼集训1-16 方阵

  • 相关阅读:
    Cookie的使用(二)
    对创业者有启发的10个故事
    PHP MySQL 相关函数
    异步刷新加载脚本(转载老赵)
    全栈工程师之路中级篇之小程序开发第二章第一节小程序的模板评分星星模板
    全栈工程师之路中级篇之小程序开发第二章第二节小程序电影卡片模板
    全栈工程师之路中级篇之小程序开发第一章第三节阅读官方demo
    全栈工程师之路中级篇之小程序开发第一章第五节从px到rpx
    全栈工程师之路中级篇之小程序开发第一章第二节注册小程序和开发工具讲解
    全栈工程师之路中级篇之小程序开发第一章第四节从block盒式布局到Flex弹性布局
  • 原文地址:https://www.cnblogs.com/hchhch233/p/10016543.html
Copyright © 2011-2022 走看看