特殊的数
一些数具有特殊的意义,或是特殊的性质。
错排数
记作\(d_n\)。
如何求?
容斥做法
递推做法
考虑置换环中:
-
\(n\)所在环的大小\(=2\),那么剩下\(n-2\)个数要是错拍,于是贡献\((n-1)d_{n-2}\)。
-
\(n\)所在环的大小\(\ge 3\),那么\(n\)插入之前就应该是错排,一共\(n-1\)个位置可以插入,于是贡献\((n-1)d_{n-1}\)
综上,\(d_n=(n-1)(d_{n-1}+d_{n-2})\)。
卡特兰数(\(Catalan\ Number\))
以下记作\(h_n\)。
这个数字是很多计数问题的答案,如:
-
网格图上从\((0,0)\)走到\((n,n)\),不得经过\(y=x\)的方案数。
-
在圆上任取\(2n\)个点,连出\(n\)条线段且两两不交的方案数。
-
进栈序列为\(1,2,\dots ,n\)的栈的出栈序列的方案数。
-
\(n\)对括号所能组成的合法括号序列数。
-
\(n\)个节点构成二叉树的方案数。
递推式:
顺带把通项写了。
另一个递推式:
证明一下通项:
考虑\(h_n\)的OGF为\(H\),由第一种递推式可以整理出\(H=1+xH^2\)。
解得\(H=\dfrac{1\pm \sqrt{1-4x}}{2x}=\dfrac{2}{1\mp \sqrt{1-4x}}\)。由\(H(0)=h_0=1\)可知要取\(H=\dfrac{1-\sqrt{1-4x}}{2x}\)
然后拿二项式定理展开\(\sqrt{1-4x}\)即可。
斐波那契数(\(Fibonacci\ Number\))
斯特林数(\(Stirling\ Number\))
第二类斯特林数
这里先介绍第二类斯特林数(因为它更常用)。
第二类斯特林数:\(n \brace m\),表示将\(n\)个不同物品划分入\(m\)个相同(无标号)非空集合中构成簇(元素为集合的集合)的方案数。
考虑第\(n\)个元素,我们得到了它的递推式和通项公式。
(考虑组合意义,要么第\(n\)个元素单独构成一个集合,要么第\(n\)个元素选择前\(m\)个集合中的一个插入。)
边界为\({n\brace 0}=[n=0]\)
以及,
观察通项公式的特点,令\(f_i=\frac{i^n}{i!},g_{m-i}=\frac{(-1)^{m-i}}{(m-i)!}\),则有:
后面是卷积的形式,可以用\(\mathrm{NTT}\)优化到\(O(m\log m)\)求出一整行(一行指:\(n\brace i\)中,\(n\)相同,\(i=0\dots m\))。
特殊值
-
\({n\brace 0}=[n=0]\)
-
\({n\brace 1}={n\brace n}=1(n>0)\)
-
\({n\brace 2}=2^{n-1}-1(n>0)\)
-
\({n\brace n-1}=\dbinom n2\)
生成函数
用\(x\)标识元素个数,\(y\)标识无序集合个数。元素是带标号的,于是无序集合也可以认为带标号(因为其中每个组分带标号)。那么一个元素对应的生成函数就是\(F(x)=x\)。使用有标号\(\text{SET}\)构造来构造出放入一个集合中的元素,由于集合非空,需要去掉空集,再用\(y\)标识无序集合个数,可知一个无序集合的生成函数为\(y(e^x-1)\)。
再次对无序集合使用有标号\(\text{SET}\)构造,可知第二类斯特林数的二元生成函数为\(e^{y(e^x-1)}\)。
其中在\(x\)上是EGF,在\(y\)上是OGF。分别提取\(\Big[\dfrac{x^n}{n!}\Big]\)和\([y^m]\)系数即可得到一行和一列的生成函数。
“在\(x\)上是EGF,在\(y\)上是OGF”,这是为什么?口胡了一个解释是集合本来是无标号的,是有标号的元素作为组分使得它可以当成有标号的。于是标识有标号元素的\(x\)对应的应当是EGF,而标识无标号集合的\(y\)对应的应当是OGF。
和高阶差分的关系
第一类斯特林数
\({n\brack k}\)表示将\(n\)个元素分成\(k\)个轮换的方案数,也即\(n!\)个排列中,有\(k\)个置换环的方案数。
特殊值
-
\({n\brack 0}=[n=0]\)
-
\({n\brack n}=1(n>0)\)
-
\({n\brack 1}=(n-1)!(n>0)\)
-
\({n\brack n-1}=\dbinom{n}{2}\)
不等式
由定义易知\({n\brack k}\ge{n\brace k}\),当且仅当每个轮换至多有\(2\)个元素时等号成立,即\(k=n-1,n\)。
递推式
即考虑第\(n\)个元素的决策,放在以有的\(k\)个轮换中的一个,有\(n-1\)个位置可以放,或者自己成为一个轮换。
生成函数
一行之和
由定义可知。
普通幂转下降幂
证明一:
考虑组合意义。左边相当于将\(k\)个元素放入\(x\)个有标号集合中(集合可以为空)。
右边\(i\)相当于枚举非空集合个数,\({x\choose i}\)表示从\(x\)个集合中选出\(i\)个集合使之非空,\(k\brace i\)表示将\(k\)个元素划分到\(i\)个无标号非空集合中的方案数。由于\(x\choose i\)和\(k\brace i\)的集合都无标号,最后乘上\(i!\)让集合有标号。
那么左右两边的组合意义相同,所以相等。
证明二:
一个重要的观察是:\(x^{\underline{k+1}}=x^{\underline k}(x-k)\Rightarrow x\cdot x^{\underline k}=x^{\underline{k+1}}+k\cdot x^{\underline k}\)
于是用数学归纳法和第二类斯特林数的加法公式可以证。
上升幂转普通幂
观察:\(x^{\overline{k+1}}=(x+k)x^{\overline k}\),且\((x+n-1)x^k=x^{k+1}+(n-1)\cdot x^k\)
下降幂转普通幂
注意到上升幂和下降幂有相反的符号即可得到。
普通幂转上升幂
注意到\((-x)^{\underline n}=(-1)^nx^{\overline n}\),将\(-x\)代入普通幂转下降幂,然后用注意到的式子即可得到。

浙公网安备 33010602011771号