• 斯特林数相关


    最近做题时发现斯特林数这一块不怎么成系统,于是从各路神仙的博客里学习了一下,因此也就有了这篇博客

    主要学习了这位神仙的博客:第二类斯特林数总结

    第二类斯特林数

    第二类斯特林数 (egin{Bmatrix}n\iend{Bmatrix}) 代表将 (n) 个元素划分到 (i) 个集合里的方案数,也可以理解为将 (n) 个不同的小球放入 (i) 个相同的盒子里的方案数,递推公式为

    [egin{Bmatrix}n\iend{Bmatrix}=egin{Bmatrix}n-1\i-1end{Bmatrix}+i imes egin{Bmatrix}n-1\iend{Bmatrix} ag{1.1} ]

    即讨论第 (n) 个元素是放进已有的 (i) 个盒子里还是放到一个新盒子里

    直接递推求是 (O(n^2)) 的,但我们还有一个等式

    [n^m=sumlimits_{i=0}^{n}egin{Bmatrix}m\iend{Bmatrix}i!dbinom{n}{i} ag{1.2} ]

    二项式反演一下得到

    [egin{Bmatrix}m\nend{Bmatrix}=frac{1}{n!}sumlimits_{i=0}^{n}(-1)^{n-i}dbinom{n}{i}i^m ag{1.3} ]

    然后就能 ( ext{FFT})

    其实式 ((1.3)) 也可以从容斥的角度思考,其中 (dbinom{n}{i}) 是选择 (i) 个盒子必须为空的方案数,而又因为这些计算都是在盒子不同的基础上进行的,所以最后还要除以 (n!) 消去有序性

    另外,对于式 ((1.2)) ,我们也可以将其写成

    [n^m=sumlimits_{i=0}^{m}egin{Bmatrix}m\iend{Bmatrix}n^{underline{i}} ag{1.4} ]

    我们将在下面看到这个等式的用途

    第一类斯特林数

    第一类斯特林数分为有符号和无符号两种,设 (s_s) 表示有符号第一类斯特林数,(s_u) 为无符号第一类斯特林数,两者的关系为 (s_s(n,m)=(-1)^{n+m}s_u(n,m))

    在这里我们重点讨论无符号第一类斯特林数

    无符号第一类斯特林数 (egin{bmatrix}n\iend{bmatrix}) 的含义为将 (n) 个元素分到 (i) 个圆排列中的方案数,递推公式为

    [egin{bmatrix}n\iend{bmatrix}=egin{bmatrix}n-1\i-1end{bmatrix}+(n-1) imes egin{bmatrix}n-1\iend{bmatrix} ag{2.1} ]

    即考虑在已有的 (n-1) 个元素中的一侧插入第 (n) 个元素扩大圆排列或单独把第 (n) 个元素作为一个圆排列

    它有一些不错的性质

    [sumlimits_{i=0}^{n}egin{bmatrix}n\iend{bmatrix}=n! ag{2.2} ]

    以及

    [egin{bmatrix}n\1end{bmatrix}=(n-1)! ag{2.3} ]

    对于式 ((2.2)) ,左边的式子其实在枚举由 (i) 个循环组成的置换的个数,而 (n) 个元素的排列与置换一一对应,那么显然等式成立

    对于式 ((2.3)) ,我们考虑展开 (egin{bmatrix}n\1end{bmatrix})

    [egin{bmatrix}n\1end{bmatrix}=(n-1)egin{bmatrix}n-1\1end{bmatrix}=(n-1)(n-2)egin{bmatrix}n-2\1end{bmatrix}=...=(n-1)! ag{2.4} ]

    其中展开出来的 (egin{bmatrix}n\0end{bmatrix}) 因等于 (0) 而被舍弃

    类似于式 ((1.4)),第一类斯特林数也有类似的等式

    [sumlimits_{i=0}^{n}s_u(n,i)x^i=x^{overline{n}} ag{2.5} ]

    [sumlimits_{i=0}^{n}s_s(n,i)x^i=x^{underline{n}} ag{2.6} ]

    根据 (s_s)(s_u) 的关系,式 ((2.6)) 也可以写为

    [sumlimits_{i=0}^{n}(-1)^{n-i}s_u(n,i)x^i=x^{underline{n}} ag{2.7} ]

    用数学归纳法证明式 ((2.7))

    [x^{underline{n+1}}\=x^{underline{n}} imes (x-n)\=(x-n)sumlimits_{i=0}^{n}(-1)^{n-i}s_u(n,i)x^i\=sumlimits_{i=1}^{n+1}(-1)^{n+1-i}s_u(n,i-1)x^i+sumlimits_{i=0}^{n}(-1)^{n+1-i}ns_u(n,i)x^i\=s_u(n+1,n+1)x^{n+1}+sumlimits_{i=0}^{n}(-1)^{n+1-i}(s_u(n,i-1)+ns_u(n,i))x^i\=s_u(n+1,n+1)x^{n+1}+sumlimits_{i=0}^{n}(-1)^{n+1-i}s_u(n+1,i)x^i\=sumlimits_{i=0}^{n+1}(-1)^{n+1-i}s_u(n+1,i)x^i ]

    那么对于式 ((2.5)) 同理也可证明

    从另一个角度来看,(x^{overline{n}})(x^{underline{n}}) 分别可看作无符号第一类斯特林数 (s_u) 与有符号第一类斯特林数的 (s_s) 的生成函数的封闭形式

    我们可以用倍增+( ext{NTT})(O(nlog n)) 的时间内求出它的生成函数 (G(x)),那么 (s(n,i)=[x^i]G(x))

    斯特林反演

    斯特林反演说的是这样一件事情:有两个数列 ({f_n})({g_n}) ,那么若有

    [f_n=sumlimits_{i=0}^{n}egin{Bmatrix}n\iend{Bmatrix}g_i ag{3.1} ]

    就有

    [g_n=sumlimits_{i=0}^{n}(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}f_i ag{3.2} ]

    有了上面的一些推导我们就不难证明其正确性了

    由式 ((1.4)) 与式 ((2.7)) 可知,若令 (f_i=x^i)(g_i=x^{underline{i}}) ,那么显然上面的关系成立,那么有

    [F=A imes G,G=B imes F ag{3.3} ]

    [F=A imes B imes F ag{3.4} ]

    可以看出 (A imes B=I) ,即 (A=B^{-1})

    说明 (a_{n,i}=egin{Bmatrix}n\iend{Bmatrix}) 构成的矩阵与 (b_{n,i}=(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}) 构成的矩阵互逆

    那么对于任意的 (f_n)(g_n) ,上述关系一定也还成立

    而如果我们暴力将式 ((2.7)) 代入式 ((1.4)) 中,也可以得到同样的结论:

    [n^m\=sumlimits_{i=0}^{m}egin{Bmatrix}m\iend{Bmatrix}n^{underline{i}}\=sumlimits_{i=0}^{m}egin{Bmatrix}m\iend{Bmatrix}sumlimits_{j=0}^{i}(-1)^{i-j}egin{bmatrix}i\jend{bmatrix}n^j\=sumlimits_{i=0}^{m}n^isumlimits_{j=i}^{m}(-1)^{j-i}egin{bmatrix}j\iend{bmatrix}egin{Bmatrix}m\jend{Bmatrix} ]

    那么显然有

    [[i==m]=sumlimits_{j=i}^{m}(-1)^{j-i}egin{bmatrix}j\iend{bmatrix}egin{Bmatrix}m\jend{Bmatrix} ag{3.5} ]

    即说明 (a_{n,i}=egin{Bmatrix}n\iend{Bmatrix}) 构成的矩阵与 (b_{n,i}=(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}) 构成的矩阵互逆

    当然第一类斯特林数也可以反演到第二类斯特林数,只不过可能要依据 (i)(m) 的奇偶性改一改 (-1) 的指数

    如果有写的不到位的地方我会再补充一点...

  • 相关阅读:
    [Web 前端] CSS 盒子模型,绝对定位和相对定位
    [Android Pro] 跨平台反编译工具 jadx (ubuntu亲测 可用)
    [Web 前端] Jquery 复制元素,并修改属性, 追加到另一个元素后面
    [Web 前端 ] Jquery attr()方法 获取或修改 对象的属性值
    [Web 前端] Jquery实现可直接编辑的表格
    [Web 前端] td长度固定,内容过长,超过部分用省略号代替
    [Network] okhttp3与旧版本okhttp的区别分析
    [Android Pro] AndroidStudio IDE界面插件开发(进阶篇之Editor)
    graph embedding 使用方法
    win10 'make' 不是内部或外部命令
  • 原文地址:https://www.cnblogs.com/ForwardFuture/p/11507412.html
Copyright © 2020-2023  润新知