zoukankan      html  css  js  c++  java
  • 学习笔记

    第一类斯特林数

    (n) 个不同的小球组成 (m) 个项链的方案数,计做 (egin{bmatrix} n\m end{bmatrix})。这就是(无符号)第一类斯特林数。

    第一类斯特林数有一个很显然的递推式:

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

    枚举两种情况,第一种是新开辟一个环,第二种是接在已经有的点的后面。

    性质

    性质1

    [n!=sum_{i=0}^n egin{bmatrix} n\i end{bmatrix} ]

    可以从置换的角度理解。左边是所有可能的置换的数量,右边有在枚举 (n) 个数分成 (i) 个循环的方案数之和。两者显然相等。

    性质2

    定义 (x^{overline n}) 表示 (prodlimits_{i=0}^{n-1} x-i)(x^{underline n}) 表示 (prodlimits_{i=0}^{n-1} x+i)

    [x^{overline n}=sum_{i=0}^negin{bmatrix} n\i end{bmatrix}x^i\ x^{underline n}=sum_{i=0}^n(-1)^{n-i}egin{bmatrix} n\i end{bmatrix}x^i ]

    证明考虑归纳法:

    [egin{align*} x^{overline n} &= x^{overline{n-1}} cdot(x+n-1)\ &= (sum_{i=0}^{n-1} egin{bmatrix} n-1\i end{bmatrix} x^i) cdot (x+n-1)\ &= sum_{i=0}^n (egin{bmatrix} n-1\i end{bmatrix}+egin{bmatrix} n-1\i-1 end{bmatrix}cdot (n-1)) x^i\ &= sum_{i=0}^n egin{bmatrix} n\i end{bmatrix}x^i end{align*} ]

    第二个式子证明同理,把 (-1) 带进去归纳就可以了,不再赘述。

    PS: ((-1)^{n-i}egin{bmatrix} n\i end{bmatrix}) 就是所谓的有符号第一类斯特林数。

    性质3

    [sum_{i=m}^n egin{bmatrix} n\i end{bmatrix}egin{Bmatrix} i\m end{Bmatrix}=sum_{i=m}^n egin{Bmatrix} n\i end{Bmatrix}egin{bmatrix} i\m end{bmatrix} ]

    不会证。

    如果有哪位神仙会证明的欢迎来联(diao)系(da)我。

    求法

    根据性质2,(x^{overline n}=sum_{i=0}^negin{bmatrix} n\i end{bmatrix}x^i)

    这个性质等价于对于多项式 (x(x+1)(x+2)cdots(x+n-1))(egin{bmatrix} n\i end{bmatrix})(x_i) 的系数。

    同时由于 (x^{overline{2k}}=x^{overline k}(x+k)^{overline k}),我们可以发现,如果我们已经求出了 (x^{overline{k}}) 的每一项的系数,((x+k)^{overline k}) 的系数也很好求,我们就可以很轻松的扩展出 (x^{overline{2k}}) 的每一项的系数。至于怎么求 ((x+k)^{overline k}) 的系数,如下:

    (F(x) = sumlimits_{i=0}^k a_ix^i),则

    [egin{align*} F(x+k)&=sum_{i=0}^k a_i(x+k)^i\ &=sum_{i=0}^k a_isum_{j=0}^iinom ij k^{i-j}x^j\ &=sum_{i=0}^k a_isum_{j=0}^ifrac{i!k^{i-j}x^j}{j!(i-j)!}\ &=sum_{j=0}^k (frac{1}{j!}sum_{i=j}^kfrac{a_ii!k^{i-j}}{(i-j)!})x^j end{align*} ]

    上面的式子系数可以通过 FFT 求出来。然后求出来系数以后再做一遍 FFT 把 (F(x) F(x+k)) 求出来就可以了。

    每一次串的长度都被倍长,类似于多项式求逆的复杂度分析,总的时间复杂度为 (O(nlog n))

    第二类斯特林数

    第二类斯特林数 (egin{Bmatrix}n\k end{Bmatrix}) 表示 (n) 个不同的小球放进 (k) 个相同的盒子,且盒子不能为空的方案数。

    第二类斯特林数的递推式是这样的:

    [egin{Bmatrix}n\k end{Bmatrix} = egin{Bmatrix}n-1\k-1 end{Bmatrix}+egin{Bmatrix}n-1\k end{Bmatrix}cdot k ]

    转移是考虑将这个小球放进一个新的盒子,还是放到原来有的 (k) 个盒子中的。

    求法

    如果我们需要求出所有的 (S(n, i)),这样直接递推是 (O(n^2)) 的。但是结合二项式反演,我们可以 (O(nlog n)) 求出所有的 (S(n, i))

    既然第二类斯特林数要求盒子不能为空,那么我们就可以很容易的得到一个这样的等式。

    [k^n = sum_{i=0}^k i! inom ki egin{Bmatrix}n\iend{Bmatrix} ]

    左边表示把 (n) 个不同小球放进 (k)不同的盒子,且可以为空,右边的话,就是先枚举有哪些盒子是不为空的,然后用斯特林数求一下方案数,乘上从 (k) 个盒子中选择 (i) 个数组合起来的方案数;但是这样求出来的相同的盒子的方案,因此还需要乘上 (i!)

    我们令 (f(k) = k^n)(g(k)=k!egin{Bmatrix}n\k end{Bmatrix})。根据上面的结论,有

    [f(k) = sum_{i=0}^k inom ki g(i) ]

    那么直接二项式反演

    [g(k)=sum_{i=0}^k(-1)^{k-i}inom ki f(i)\k!egin{Bmatrix}n\k end{Bmatrix}=sum_{i=0}^k (-1)^{k-i}inom kii^n\egin{align*}egin{Bmatrix}n\k end{Bmatrix} &= frac 1{k!}sum_{i=0}^k (-1)^{k-i}inom kii^n\&= frac 1{k!}sum_{i=0}^k frac {(-1)^{k-i}k!i^n}{i!(k-i)!}\&= sum_{i=0}^k frac {(-1)^{k-i}i^n}{i!(k-i)!}end{align*} ]

    我们令 (A_i = frac{i^n}{i!})(B_i = frac{(-1)^i}{i!})。用 FFT 将 (A)(B) 做卷积就可以了。

    性质1

    就是在上面的求法中,我们已经有了一个性质了:

    [k^n = sum_{i=0}^k i! inom ki egin{Bmatrix}n\iend{Bmatrix} ]

    这个式子可以写成

    [k^n=sum_{i=0}^kegin{Bmatrix}n\iend{Bmatrix} k^{underline i} ]

    由于当 (n > k) 时,(k^{underline i}=0) ,所以上式可以等价写成

    [k^n = sum_{i=0}^n i! inom ki egin{Bmatrix}n\iend{Bmatrix}=sum_{i=0}^negin{Bmatrix}n\iend{Bmatrix} k^{underline i} ]

    性质1 推论1

    [sum_{i=0}^m i^n = sum_{i=0}^negin{Bmatrix}n\iend{Bmatrix}i!inom{m+1}{i+1} ]

    证明:

    [egin{align*} sum_{i=0}^m i^n &= sum_{i=1}^m sum_{j=0}^i j! inom ij egin{Bmatrix}n\jend{Bmatrix}\ &= sum_{j=0}^n egin{Bmatrix}n\jend{Bmatrix}j!sum_{i=j}^minom ij\ &= sum_{j=0}^n egin{Bmatrix}n\jend{Bmatrix}j!inom {m+1}{j+1} end{align*} ]

    性质1 推论2

    [sum_{i=1}^m i^ninom mi = sum_{i=0}^n egin{Bmatrix}n\iend{Bmatrix}i!inom micdot 2^{m-i} ]

    证明:

    [egin{align*} sum_{i=1}^m i^ninom mi &= sum_{i=1}^m inom mi sum_{j=1}^i inom ij egin{Bmatrix}n\jend{Bmatrix} j!\ &= sum_{j=0}^n egin{Bmatrix}n\jend{Bmatrix}j!sum_{i=j}^m inom mi inom ij\ &= sum_{j=0}^n egin{Bmatrix}n\jend{Bmatrix}j!sum_{i=j}^m inom mj inom{m-j}{i-j}\ &= sum_{j=0}^n egin{Bmatrix}n\jend{Bmatrix}j!inom mj sum_{i=j}^m inom{m-j}{i-j}\ &= sum_{j=0}^n egin{Bmatrix}n\jend{Bmatrix}j!inom mj 2^{m-j} end{align*} ]

    斯特林反演

    [f(n)=sum_{i=m}^negin{Bmatrix}n\iend{Bmatrix}g(i) Longleftrightarrow g(n)=sum_{i=m}^n (-1)^{n-i} egin{bmatrix}n\iend{bmatrix}f(i)\ f(n)=sum_{i=n}^megin{Bmatrix}i\nend{Bmatrix}g(i) Longleftrightarrow g(n)=sum_{i=n}^m (-1)^{i-n} egin{bmatrix}i\nend{bmatrix}f(i) ]

    为了证明这个反演,我们先来看个结论。

    反转公式

    [sum_{i=m} (-1)^{n-i}egin{bmatrix}n\iend{bmatrix}egin{Bmatrix}i\mend{Bmatrix}=[m=n]\ sum_{i=m} (-1)^{n-i}egin{Bmatrix}n\iend{Bmatrix}egin{bmatrix}i\mend{bmatrix}=[m=n] ]

    证明如下:

    证明——第一个式子

    [egin{align*} m^{underline{n}}&=sum_{i=0}^n (-1)^{n-i}egin{bmatrix}n\iend{bmatrix}m^i\ &=sum_{i=1}^m(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}sum_{j=0}^iinom mjegin{Bmatrix}i\jend{Bmatrix}j!\ &=sum_{j=0}^minom mjj!sum_{i=j}^n(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}egin{Bmatrix}i\jend{Bmatrix}\ &=sum_{j=0}^mm^{underline{j}}sum_{i=j}^n(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}egin{Bmatrix}i\jend{Bmatrix} end{align*} ]

    显然 (sumlimits_{i=j}^m(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}egin{Bmatrix}i\jend{Bmatrix}) 只有在 (j=m) 的时候才为 (1),否则为 (0)。第一个公式得证。

    证明——第二个式子

    [egin{align*} m^n&=sum_{i=0}^megin{Bmatrix}n\iend{Bmatrix}m^{underline i}\ &=sum_{i=0}^megin{Bmatrix}n\iend{Bmatrix}sum_{j=0}^i(-1)^{i-j}egin{bmatrix}i\jend{bmatrix}m^j\ &=sum_{j=0}^n m^jsum_{i=j}^m(-1)^{i-j}egin{Bmatrix}n\iend{Bmatrix}egin{bmatrix}i\jend{bmatrix} end{align*} ]

    显然 (sumlimits_{i=j}^m(-1)^{i-j}egin{Bmatrix}n\iend{Bmatrix}egin{bmatrix}i\jend{bmatrix}) 只有在 (j=n) 时才为 (1),否则为 (0)。第二个公式得证。

    证明斯特林反演

    直接带进去证明:

    第一个形式

    [egin{align*} g(n)&=sum_{i=m}^n (-1)^{n-i} egin{bmatrix}n\iend{bmatrix}f(i)\ &=sum_{i=m}^n (-1)^{n-i} egin{bmatrix}n\iend{bmatrix}sum_{j=m}^iegin{Bmatrix}i\jend{Bmatrix}g(j)\ &=sum_{j=m}^ng(j)sum_{i=j}^n(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}egin{Bmatrix}i\jend{Bmatrix} end{align*} ]

    又由上面的结论可知,只有当 (j=n) 的时候 (sumlimits_{i=j}^n(-1)^{n-i}egin{bmatrix}n\iend{bmatrix}egin{Bmatrix}i\jend{Bmatrix}) 才为 (1),否则为 (0),所以证毕。

    第二个形式

    [egin{align*} g(n)&=sum_{i=n}^m (-1)^{i-n} egin{bmatrix}i\nend{bmatrix}f(i)\ &=sum_{i=n}^m (-1)^{i-n} egin{bmatrix}i\nend{bmatrix}sum_{j=i}^megin{Bmatrix}j\iend{Bmatrix}g(j)\ &=sum_{j=n}^m g(j) sum_{i=n}^j(-1)^{i-n}egin{Bmatrix}j\iend{Bmatrix}egin{bmatrix}i\nend{bmatrix} end{align*} ]

    又由上面的反转公式可知,(sumlimits_{i=m}^j(-1)^{i-n}egin{Bmatrix}j\iend{Bmatrix}egin{bmatrix}i\nend{bmatrix}) 只有在 (j=m) 的时候才不为 (0),所以此形式得证。

    参考资料

    https://www.cnblogs.com/Emiya-wjk/p/10015753.html#autoid-2-4-0

    https://www.cnblogs.com/hchhch233/p/10016543.html

  • 相关阅读:
    X 如何在mysql客户端即mysql提示符下执行操作系统命令
    X MySQL UNDO表空间独立和截断 ,mysql undo 的历史
    X Mysql5.7忘记root密码及mysql5.7修改root密码的方法
    X mysql密码的安全策略ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    二分法查找
    elasticsearch API
    logstash的基础
    elasticsearch的基础
    Linux的进程管理
    Linux的网卡配置
  • 原文地址:https://www.cnblogs.com/hankeke/p/stirling-inversion.html
Copyright © 2011-2022 走看看