zoukankan      html  css  js  c++  java
  • 斯特林数的基础性质与斯特林反演的初步入门

    前言

    反反复复十余遍了吧,每次点开斯特林反演的学习博客,看了几行式子又晕乎乎地点击关掉。

    但到了现在,我已经不想再退缩了。

    这里仅介绍定义、性质等基础的理论知识,至于如何快速求解斯特林数之类的具体实现可能会另开一篇博客吧。

    第一类斯特林数

    定义

    第一类斯特林数(S_1(n,m))表示(n)有区别的小球拼成(m)个环(无空)的方案数。

    递推式

    [S_1(n,m)=S_1(n-1,m-1)+(n-1) imes S_1(n-1,m) ]

    无非是两种情况:

    • 新增一个环。
    • 加入到原先的一个环中。注意放在不同球之前是不同的,因此系数是(n-1)

    重要性质(1)

    [n!=sum_{i=0}^nS_1(n,i) ]

    考虑一个排列可以分为若干置换环。

    我们可以把第一类斯特林数中的环理解成置换,全排列和斯特林数就一一对应了。

    重要性质(2)

    [x^{underline{n}}=sum_{i=0}^nS_1(n,i) imes (-1)^{n-i} imes x^i\ x^{ar{n}}=sum_{i=0}^n S_1(n,i) imes x^i ]

    考虑归纳法证明,这里以第一个式子为例:

    [egin{align} x^{underline{n+1}}&=(x-n)x^{underline{n}}\ &=xsum_{i=0}^nS_1(n,i) imes(-1)^{n-i} imes x^i-nsum_{i=0}^nS_1(n,i) imes (-1)^{n-i} imes x^i\ &=sum_{i=1}^{n+1}S_1(n,i-1) imes(-1)^{n-i+1}x^i+nsum_{i=0}^{n+1}S_1(n,i) imes(-1)^{n-i+1} imes x^i\ &=(sum_{i=1}^{n+1}(S_1(n,i-1)+n imes S_1(n,i)) imes(-1)^{(n+1)-i} imes x^i)+(S_1(n,0) imes(-1)^{n+1} imes x^0)\ &=sum_{i=0}^{n+1}S_1(n+1,i) imes(-1)^{(n+1)-i} imes x^i end{align} ]

    第二类斯特林数

    定义

    第二类斯特林数(S_2(n,m))表示(n)有区别的小球放入(m)无区别的盒子(无空)的方案数。

    递推式

    [S_2(n,m)=S_2(n-1,m-1)+m imes S_2(n-1,m) ]

    同样可以分成两种情况:

    • 新增一个盒子。
    • 加入到原先的一个盒子中。注意这就是和第一类斯特林数的区别了,它的系数是(m)

    重要性质

    [m^n=sum_{i=0}^mS_2(n,i) imes i! imes C(m,i)=sum_{i=0}^mS_2(n,i) imes m^{underline{i}} ]

    考虑(m^n)就是把(n)个有区别的小球放入(m)个有区别的盒子(可以为空)的方案数。

    那么我们首先枚举非空盒子数(i),把(n)个球放入(i)个盒子中,最后给这些盒子标个号,就对应起来了。

    组合表示

    [S_2(m,n)=frac1{m!}sum_{k=0}^m(-1)^k imes C_{m,k} imes (m-k)^n ]

    如果我们算入空箱子的情况,答案就是(frac{m^n}{n!})

    因此我们容斥,枚举(k)表示至少有多少空盒子。

    但注意在这里的容斥过程中我们默认了盒子是不同的(因为这样好算),所以最好还要除以一个(frac1{m!})

    自然数幂和

    第二类斯特林数和自然数幂和有着重要关系。

    推一推式子:

    [egin{align} sum_{i=0}^n i^k&=sum_{i=0}^nsum_{j=0}^kS_2(k,j) imes i^{underline{j}}\ &=sum_{j=0}^kS_2(k,j)sum_{i=0}^ni^{underline{j}}\ &=sum_{j=0}^kS_2(k,j)j!sum_{i=0}^nC_i^j\ &=sum_{j=0}^kS_2(k,j)j!C_{n+1}^{j+1}\ end{align} ]

    斯特林反演

    定义

    [f(n)=sum_{k=0}^nS_2(n,k)g(k)Leftrightarrow g(n)=sum_{k=0}^n(-1)^{n-k}S_1(n,k)f(k) ]

    所需性质

    总结:

    [x^{underline{n}}=sum_{i=0}^nS_1(n,i)(-1)^{n-i}x^i\ x^{ar{n}}=sum_{i=0}^nS_1(n,i)x^i\ m^n=sum_{i=0}^nS_2(n,i) imes m^{underline{i}} ]

    补充:

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

    前置:反转公式

    [sum_{k=m}^n(-1)^{n-k}S_1(n,k)S_2(k,m)=[m=n]\ sum_{k=m}^n(-1)^{n-k}S_2(n,k)S_1(k,m)=[m=n] ]

    反转公式(1)

    [egin{align} m^{underline{n}}&=sum_{i=0}^nS_1(n,i)(-1)^{n-i}m^i\ &=sum_{i=0}^nS_1(n,i)(-1)^{n-i}sum_{j=0}^iS_2(i,j)m^{underline{j}}\ &=sum_{i=0}^nm^{underline{i}}sum_{j=i}^n(-1)^{n-j}S_1(n,j)S_2(j,i) end{align} ]

    反转公式(2)

    [egin{align} m^{n}&=sum_{i=0}^nS_2(n,i)m^{underline{i}}\ &=sum_{i=0}^nS_2(n,i)(-1)^i(-m)^{ar{i}}\ &=sum_{i=0}^nS_2(n,i)(-1)^isum_{j=0}^iS_1(i,j)(-m)^{j}\ &=sum_{i=0}^nm^{i}sum_{j=i}^n(-1)^{i-j}S_2(n,j)S_1(j,i) end{align} ]

    斯特林反演证明

    已知:

    [g(n)=sum_{k=0}^n(-1)^{n-k}S_1(n,k)f(k) ]

    证明:

    [egin{align} f(n)&=sum_{k=0}[k=n]f(k)\ &=sum_{k=0}^nsum_{j=k}^nS_2(n,j)S_1(j,k)(-1)^{j-k}f(k)\ &=sum_{k=0}^nS_2(n,k)sum_{j=0}^k(-1)^{k-j}S_1(k,j)f(j)\ &=sum_{k=0}^nS_2(n,k)g(k) end{align} ]

    后记

    例题什么的,先坑着吧。。。

  • 相关阅读:
    [笔记] 辛普森积分
    Luogu P4175 [CTSC2008]网络管理
    Luogu P4331 [BOI2004]Sequence 数字序列
    Luogu P1456 Monkey King
    Luogu P3261 [JLOI2015]城池攻占
    Luogu P4309 [TJOI2013]最长上升子序列
    Luogu P4246 [SHOI2008]堵塞的交通
    Luogu P3638 [APIO2013]机器人
    Luogu P4294 [WC2008]游览计划
    CF613D Kingdom and its Cities
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/Stirling.html
Copyright © 2011-2022 走看看