『特殊计数数列』

斐波那契数列

其实不是特殊计数数列,但是可能出现在题目里.

定义:\(f_0=0,f_1=1,f_n=f_{n-1}+f_{n-2}(n\geq 2)\),生成函数:\(F(x)=\frac{x}{1-x-x^2}\).

通项公式:

\[f_n=\frac{1}{\sqrt 5}\left(\frac{\sqrt 5 +1}{2}\right)^n-\frac{1}{\sqrt 5}\left(\frac{\sqrt 5-1}{2}\right)^n \]

一些性质:

\(1.\) \(f_n^2-f_{n-1}f_{n+1}=(-1)^{n-1}\).

\(2.\) \(\sum_{i=1}^{n}f_{2i-1}=f_{2n}\).

\(3.\) \(\sum_{i=1}^{n}f_{2i}=f_{2n+1}-1\).

\(4.\) \(\sum_{i=1}^n f_i^2=f_{n}f_{n+1}\).

\(5.\) \(\frac{f_{2n}}{f_n}=f_{n-1}+f_{n+1}\).

\(6.\) \(\sum_{i=1}^n f_i=f_{i+2}-1\).

\(7.\) \(m|n\Rightarrow f_m|f_n\).

\(8.\) \(f_{\gcd(n,m)}=\gcd(f_n,f_m)\)

求第\(n\)项通常可以用矩阵乘法:

\[\begin{bmatrix} f_{n-1}& f_{n} \end{bmatrix} \times \begin{bmatrix} 0 & 1 \\ 1 & 1 \end{bmatrix} =\begin{bmatrix} f_{n}& f_{n+1} \end{bmatrix} \]

错位排列

\(d_n\)表示\(n\)个数字错位排列的方案数,则:

\[n!=\sum_{i=0}^n\binom{n}{i}d_i \]

二项式反演,得到通项公式:

\[d_n=\sum_{i=0}^n(-1)^i\binom{n}{i}(n-i)!=n!\sum_{i=0}^n\frac{(-1)^i}{i!} \]

两个递推公式:

\[d_n=(n-1)(d_{n-1}+d_{n-2}) \]

证明:

考虑分类讨论,第\(n\)个数字放进去,如果前面所有数字都是错排,那么只需把\(n\)和前面任意一个数字交换即可. 如果前面存在一个数字不是错排,那么必须和他交换.

化简一下上面的式子,可以得到:

\[d_n=n\times d_{n-1}+(-1)^n \]

卡特兰数列

\[c_i=\begin{cases}1,&i=0\\ \sum_{j=0}^{i-1}c_jc_{i-j-1},&i\geq1\end{cases} \]

生成函数

\[C(x)=\frac{1\pm\sqrt{1-4x}}{2x} \]

通项公式

\[c_n=\frac{\binom{2n}{n}}{n+1}=\binom{2n}{n}-\binom{2n}{n-1} \]

递推式

\[c_n=\frac{4n-2}{n+1}c_{n-1} \]

常见模型:

\(1.\) 一个足够大的栈的进栈序列为\(1,2,\cdots,n\)时有\(c_n\)个不同的出栈序列.

\(2.\) \(n+1\)个叶子的满二叉树的数量为\(c_n\)(每个节点有\(0/2\)个儿子).

\(3.\)\(n\times n\)的方格地图中,从一个角到另一个角,不跨越对角线的路径数为\(c_n\).

\(4.\) 圆周上有\(2n\)个点,以这些点为端点连\(n\)条互不相交的弦,不同的连法总数为\(c_n\).

\(5.\)\(n-2\)边形用其\(n-1\)条对角线分割为互不重叠的三角形的分法总数为\(c_n\).

\(6.\) \(n\)对括号合法的括号序列的方案数为\(c_n\).

格路径计数的结论:

\((0,0)\)\((n,m)\)不越过直线\(y=x\)的格路径条数为\(c_n\).

\((0,0)\)\((n,m)(n\geq m)\)越过直线\(y=x\)的格路径条数为\(\binom{n+m}{m}-\binom{n+m}{m-1}\).

斯特林数列

第一类斯特林数:\(\begin{bmatrix}n\\m\end{bmatrix}\)表示把\(n\)个有标号的球分成\(m\)个无标号的非空轮换的方案数.

递推式:

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

特殊的值:

\[\begin{bmatrix}n\\0\end{bmatrix}=\begin{cases}1, & n= 0\\ 0, & n >0\end{cases}\ ,\ \begin{bmatrix}n\\1\end{bmatrix}=(n-1)! \]

第二类斯特林数:\(\begin{Bmatrix}n\\m\end{Bmatrix}\)表示把\(n\)个有标号的球分成\(m\)个无标号的非空集合的方案数.

递推式:

\[\begin{Bmatrix}n\\m\end{Bmatrix}=\begin{Bmatrix}n-1\\m-1\end{Bmatrix}+m\begin{Bmatrix}n-1\\m\end{Bmatrix} \]

特殊的值:

\[\begin{Bmatrix}n\\0\end{Bmatrix}=\begin{cases}1, & n= 0\\ 0, & n >0\end{cases}\ ,\ \begin{Bmatrix}n\\2\end{Bmatrix}=2^{n-1}-1 \]

第二类斯特林数可以用容斥写出一个通项公式:

\[\begin{Bmatrix}n\\m\end{Bmatrix}=\frac{1}{m!}\sum_{i=0}^m(-1)^i\binom{m}{i}(m-i)^n \]

更重要的是,我们要认识到计数是双向的:

\[m^n=\sum_{i=0}^m\binom{m}{i}\begin{Bmatrix}n\\i\end{Bmatrix}i! \]

\(n\)个球随便放到\(m\)个盒子里(可以空)的方案数,就相当于枚举有多少个盒子非空,用第二类斯特林数计数,再乘上盒子标号的方案数之和.

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

\(n\)个元素排列的方案数,其实也等于枚举置换环个数的方案数之和,也就是第一类斯特林数.

斯特林数和阶乘幂都有很强的联系:

\[m^n=\sum_{i=0}^m\binom{m}{i}\begin{Bmatrix}n\\i\end{Bmatrix}i!=\sum_{i=0}^m\begin{Bmatrix}n\\i\end{Bmatrix}m^{\underline{i}} \]

我们一般会把求和上界换成\(n\)(当\(n>m\)的时候显然没什么问题,因为这时候二项式系数是\(0\),当\(n<m\)的时候只要枚举到\(n\)即可,因为斯特林数是\(0\)):

\[m^n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}m^{\underline{i}} \]

应用阶乘幂翻转\(m^{\overline{n}}=(-1)^n(-m)^{\underline{n}}\),可以令上式中的\(m=-m\),则:

\[(-m)^n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}(-m)^{\underline{i}} \\ m^n(-1)^n=\sum_{i=0}^n(-1)^i\begin{Bmatrix}n\\i\end{Bmatrix}m^{\overline{i}} \\ m^n=\sum_{i=0}^n(-1)^{n-i}\begin{Bmatrix}n\\i\end{Bmatrix}m^{\overline{i}} \]

第一类斯特林数和上升幂也有很强的关系:

\[m^{\overline n}=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}m^i \]

同样也可以阶乘幂翻转一下,得到:

\[(-m)^{\overline n}=\sum_{i=0}^n(-1)^i \begin{bmatrix}n\\ i\end{bmatrix}m^i \\ (-1)^nm^{\underline n}=\sum_{i=0}^n(-1)^i \begin{bmatrix}n\\ i\end{bmatrix}m^i \\ m^{\underline n}=\sum_{i=0}^n(-1)^{n-i} \begin{bmatrix}n\\ i\end{bmatrix}m^i \]

首先要记住两个基本公式:下降幂通过第二类斯特林数求和得到普通幂,普通幂通过第一类斯特林数求和得到上升幂. 然后剩下的再通过阶乘幂翻转推导即可.

根据斯特林数和阶乘幂之间的关系,我们还可以推导出一个翻转公式:

\[m^n=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}m^{\underline{i}}=\sum_{i=0}^n\begin{Bmatrix}n\\i\end{Bmatrix}\sum_{j=0}^i(-1)^{i-j}\begin{bmatrix}i\\ j\end{bmatrix} m^j \\ m^n=\sum_{i=0}^n\sum_{j=0}^i \begin{Bmatrix}n\\ i\end{Bmatrix}\begin{bmatrix}i\\j\end{bmatrix}(-1)^{i-j}m^j \\ =\sum_{i=0}^n\sum_{j=i}^n \begin{Bmatrix}n\\ j\end{Bmatrix}\begin{bmatrix}j\\ i\end{bmatrix}(-1)^{j-i}m^i \]

对应项系数相等,就有如下的公式成立:

\[\sum_{j=i}^n \begin{Bmatrix}n\\ j\end{Bmatrix}\begin{bmatrix}j\\ i\end{bmatrix}(-1)^{j-i}=[i=n] \]

同理可以这样操作一下:

\[m^{\overline n}=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}m^i=\sum_{i=0}^n\begin{bmatrix}n\\ i\end{bmatrix}\sum_{j=0}^i(-1)^{i-j}\begin{Bmatrix}i\\ j\end{Bmatrix}m^{\overline{j}} \\m^{\overline n}=\sum_{i=0}^n\sum_{j=0}^i\begin{bmatrix}n\\i\end{bmatrix}\begin{Bmatrix}i\\ j\end{Bmatrix} (-1)^{i-j}m^{\overline j} \\ =\sum_{i=0}^n\sum_{j=i}^n \begin{bmatrix}n\\j\end{bmatrix}\begin{Bmatrix}j\\i\end{Bmatrix}(-1)^{j-i}m^{\overline j} \]

对应项系数相等,就有如下的公式成立:

\[\sum_{j=i}^n \begin{bmatrix}n\\ j\end{bmatrix}\begin{Bmatrix}j\\ i\end{Bmatrix}(-1)^{j-i}=[i=n] \]

这两个公式就叫翻转公式,那么接下来就有两个显而易见的反演成立:

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

Bell数列

定义:\(w_n\)表示把\(1\sim n\)的自然数放到若干个无序集合中的方案数.

递推式:

\[w_n=[n=1]+\sum_{i=1}^n\binom{n-1}{i-1}w_{n-i} =\sum_{i=0}^n \begin{Bmatrix}n\\ i\end{Bmatrix} \]

生成函数:

\[\hat W(x)=\exp (e^{x}-1) \]

Prufer序列

\(\mathrm{Prufer}\)序列将一棵\(n\)个点的无根树和一个长度为\(n-2\)的正整数序列建立起一一对应关系.

根据树构造序列:每次选取标号最小的叶子,删去并将其父亲的编号加入序列.

根据序列构造树:取序列首元素\(x\),最下标号不在序列中的点\(y\),连接\((x,y)\),删去\(x,y\). 当序列外的点集只剩两个数字时连接它们.

推论:

\(1.\) 度数为\(d_i\)的节点在序列中出现\(d_i-1\)次.

\(2.\) \(\mathrm{K}_n\)的生成树个数为\(n^{n-2}\)个.

\(3.\) 给定度数序列\(d_{1\sim n}\),无根树的方案数为\(\binom{n-2}{d_1-1,d_2-1,\cdots,d_n-1}\).

\(4.\) 图联通方案数

我们可以使用\(\mathrm{Prufer}\)序列来求解. 不妨把\(k\)个连通块缩成一个点,那么问题就转化为构造一棵树. 不妨设这棵树上每个点的度数为\(d_i\),那么\(\mathrm{Prufer}\)序列的方案数显然就是一个多项式系数:

\[\binom{k-2}{d_1-1,d_2-1,\cdots,d_k-1}=\frac{(k-2)!}{\prod_{i=1}^k(d_i-1)!} \]

显然连接连通块\(i\)的边有\(s_i\)中选择,那么联通整棵树的方案数就是:

\[\binom{k-2}{d_1-1,d_2-1,\cdots,d_k-1}\prod_{i=1}^ks_i^{d_i} \]

现在我们枚举度数序列\(d\)的所有情况,那么图联通方案数就是:

\[\sum_{\sum_{i=1}^kd_i=2k-1,\forall d_i\geq 1}\binom{k-2}{d_1-1,d_2-1,\cdots,d_k-1}\prod_{i=1}^ks_i^{d_i} \]

然后换元,设\(d_i-1=t_i\),那么上式等于:

\[\sum_{\sum_{i=1}^kt_i=k-2,\forall t_i\geq 0}\binom{k-2}{t_1,t_2,\cdots,t_k}\prod_{i=1}^ks_i^{t_i+1} \]

这时候考虑多项式定理:

\[\sum_{\sum_{i=1}^ka_i=p}\binom{p}{a_1,a_2,\cdots,a_k}\prod_{i=1}^kx_i^{a_i}=\left(\sum_{i=1}^kx_i\right)^p \]

于是答案就显而易见了:

\[\sum_{\sum_{i=1}^kt_i=k-2,\forall t_i\geq 0}\binom{k-2}{t_1,t_2,\cdots,t_k}\prod_{i=1}^ks_i^{t_i+1}=\left(\sum_{i=1}^{k}s_i\right)^{k-2}\prod_{i=1}^k s_i=n^{k-2}\prod s_i \]

posted @ 2020-07-29 17:50  Parsnip  阅读(514)  评论(1编辑  收藏  举报