组合数学

放肆的年华 提交于 2020-04-03 11:40:46

二项式反演

\[f(n)=\sum^{n}_{i=0}(-1)^iC^i_ng(i)<->g(n)=\sum^n_{i=0}(-1)^iC^i_nf(i) \]

\[f(n)=\sum^n_{i=0}C^i_ng(i)<->g(n)=\sum^n_{i=0}(-1)^{n-i}C^i_nf(i) \]

第二类斯特林数

\(S^m_n\)表示的是把 \(n\) 个不同的小球放在 \(m\)个相同的盒子里方案数。盒子不能为空

也可以表示\(S^m_n=\{^n_m\}\)

\[S^m_n=S^{m-1}_{n-1}+mS^m_{n-1} \]

性质:

\[n^m=\sum^m_{i=0}S^i_m*i!*C^i_n \]

理解:左边是 \(m\)个球可以任意放在 \(n\) 个盒子里的答案

右边就是枚举有多少个盒子空着,然后组合数枚举一下。最后因为盒子不同所以要乘一个 \(i!\)

通项公式:

\(f(n)=n^m,g(i)=S^i_m*i!\)

反演一下

\[S^n_m*n!=\sum^n_{i=0}i^m*(-1)^{n-i}*C^i_n \]

\[\to S^n_m=\sum^n_{i=0}\frac{(-1)^{n-i}*i^m}{i!*(n-i)!} \]

求法:发现是卷积形式,直接\(NTT\)

与自然数幂的关系

\[sum(n)=\sum^n_{i=0}i^k \]

\[=\sum^n_{i=0}\sum^k_{j=0}S^j_ki^{\underline{j}} \]

\[=\sum^k_{j=0}S^j_k\sum^n_{i=0}i^{\underline{j}} \]

\[=\sum^k_{j=0}S^j_kj!\sum^n_{i=0}C^j_i \]

\[=\sum^k_{j=0}S^j_kj!C^{j+1}_{n+1} \]

\[=\sum^k_{j=0}S^j_k\frac{(n+1)^{\underline{j+1}}}{j+1} \]

注:\(\sum^n_{i=0}C^j_i=C^{j+1}_{n+1}\) 枚举\(j+1\)的右端点\(i+1\),则相当于从\(i\)个点中选\(j\)个点

第一类斯特林数

\(s^m_n\)表示的是把 \(n\) 个不同的小球串成 \(m\) 个项链(圆)的方案数

也可以表示\(s^m_n=[^n_m]\)

\[s^m_n=s^{m-1}_{n-1}+(n-1)s^m_{n-1} \]

性质:

\[\sum^n_{i=0}s^i_n=n! \]

理解:一组圆排列对应一组置换

求法:

考虑\(x^{\overline{n}}=\sum^{n}_{i=1}s_n^ix^i\)

上升幂即是这个数列的生成函数。

\[x^{\overline{n}}=\sum_{i=0}^{\infty}s_{n}^{i}{x}^i \]

所以我们把$ x^{\overline{n}}$看成一个多项式,求出这个多项式的 \(i\) 次项系数就是 \(s_{n}^{i}\)

怎么求呢,暴力$ FFT(NTT)$求出 \((x)\times(x+1)\times...(x+n-1)\) ,这样时间复杂度就是$ O(n^2log_2n)$

用分治\(FFT\),时间复杂度是 \(O(nlog^2_2n)\)

\(O(nlong_n)\)做法(类似多项式求逆):

\[F(x)^n=\prod^{n-1}_{i=0}(x+i),F(x)^{2n}=F(x)^nF(x+n)^n \]

求出\(F(x)^n=\sum^n_{i=0}a_ix^i\)后:

\[F(x+n)^n=\sum^n_{i=0}a_i(x+n)^i \]

\[=\sum^n_{i=0}a_i\sum^i_{j=0}s^j_in^{i-j}x_j \]

\[=\sum^n_{i=0}(\sum^n_{j=i}n^{j=i}a_j)x^i \]

\[=\sum^n_{i=0}(\sum^n_{j=i}\frac{j!}{i!(j-i)!}n^{j-i}a_j)x^i \]

\[=\sum^n_{i=0}(i!)^{-1}x^i(\sum^n_{j=i}(\frac{n^{j-i}}{(j-i)!})*(j!a_j)) \]

斯特林反演

下降幂:$ {x}{\underline{i}}=\prod_{j=0}{i-1}(x-j)$

上升幂:$ x{\overline{i}}=\prod_{j=0}{i-1}(x+j) $

性质:

$ xn=\sum_{i=1}nS_{n}{i}{x}{\underline{i}}$

证明(数学归纳法):

\(n=1\)时易证

\[x^n=x^{n-1}x=x\sum_{i=1}^{n-1}S_{n-1}^{i}{x}^{\underline{i}} \]

由于$ {x}{\underline{i+1}}={x}{\underline{i}}(x-i)$

\[\therefore\ =\sum_{i=1}^{n-1}S_{n-1}^{i}{x}^{\underline{i+1}}+\sum_{i=1}^{n-1}iS_{n-1}^{i}{x}^{\underline{i}} \]

由于$ S_n0=0,S_n{n+1}=0$

\[\therefore\ =\sum_{i=1}^{n}S_{n-1}^{i-1}{x}^{\underline{i}}+\sum_{i=1}^{n}iS_{n-1}^{i}{x}^{\underline{i}} \]

\[=\sum_{i=1}^nS_{n}^{i}{x}^{\underline{i}} \]

另:

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

\[x^n=\sum^n_{i=1}S^i_nx^{\underline{i}} \]

\[x^{\overline{n}}=\sum^n_{i=1}s^i_nx^i \]

\[x^n=\sum^n_{i=1}S^i_n(-1)^{n-i}x^{\overline{i}} \]

\[x^{\underline{n}}=\sum^n_{i=1}s_n^i(-1)^{n-i}x^i \]

后面两个\(−1\)的幂次就对了呢

比如

\(x^{\underline{4}}=x^4-6x^3+11x^2-6x\)

\(x^{\overline{4}}=x^4+6x^3+11x^2+6x\)

反转公式:

\[\sum^n_{k=m}(-1)^{n-k}s^k_nS^m_k=[m=n] \]

\[\sum^n_{k=m}(-1)^{n-k}S^k_ns^m_k=[m=n] \]

\[m^{\underline n}=\sum^n_{i=0}s_n^i(-1)^{n-i}m^i \]

\[=\sum^n_{i=0}s^i_n(-1)^{n-i}\sum_{j=0}^iS^j_im^{\underline j} \]

\[=\sum^n_{i=0}m^{\overline i}\sum^n_{j=i}(-1)^{n-j}s^j_nS^i_j \]

\[m^n=\sum^n_{i=0}S^i_nm^i \]

\[=\sum^n_{i=0}S^i_n(-1)^i(-m)^i \]

\[=\sum^n_{i=0}S^i_n(-1)^i\sum^i_{j=0}s^j_i(-m)^j \]

\[=\sum^n_{i=0}m^i\sum^n_{j=i}(-1)^{i-j}S_n^js^i_j \]

推式:

已知:\(g(n)=\sum^n_{k=0}(-1)^{n-k}s^k_nf(k)\)

\[f(n)=\sum^n_{k=0}[k=n]f(k) \]

\[=\sum^n_{k=0}\sum^n_{j=k}S^j_ns^k_j(-1)^{j-k}f(k) \]

\[=\sum^n_{k=0}S_n^k\sum^k_{j=0}(-1)^{k-j}s^j_kf(j) \]

\[=\sum^n_{k=0}S^k_ng(k) \]
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!