错排数计数

定义:\(\forall i\in[1,n],p_i\neq i\) 的长度为 \(n\) 的排列数。

一开始看到的时候还想用容斥推:\(\sum\limits_{i=0}^n\binom{n}{i}(-1)^i(n-i)!\),结果发现太垃圾了。

递推法

\(D(n)\) 表示长度为 \(n\) 的错排数,考虑枚举数 \(n\) 放在了第 \(i\) 个位置(\(1\leq i\leq n-1\)),然后此时数 \(i\) 已经不在自己的位置了,考虑它放在哪:

  • 若数 \(i\) 放在了第 \(n\) 个位置,那么相当于剩下的 \(n-2\) 个数的错排问题。
  • 若数 \(i\) 不放在第 \(n\) 个位置,此时看成数 \(i\) 也有一个错排限制,于是相当于 \(n-1\) 个数的错排问题。

于是有递推式:\(D(n)=(n-1)\big(D(n-1)+D(n-2)\big)\)

生成函数法

排列可以看成若干个置换环组成,错排可以看成若干个大小不为 \(1\) 的置换环组成。

可知大小为 \(n\) 的置换环的数量为 \((n-1)!\),那么大小为 \(n(n\geq 2)\) 的置换环数量的 EGF 为:

\[F(x)=\sum_{n\geq 2}\dfrac{(n-1)!}{n!}x^n=\sum_{n\geq 2}\dfrac{x^n}{n}=\left(\int \sum_{n\geq 0}x^{n}\right)-x=\left(\int \dfrac{1}{1-x}\right)-x=-\ln(1-x)-x \]

于是错排数的指数生成函数即为:

\[\exp F(x)=\exp(-\ln(1-x)-x) \]

递推式变换法

算是递推法的进阶。回顾得到的递推式

\[\begin{aligned} d_0&=1,d_1=0\\ d_n&=(n-1)(d_{n-1}+d_{n-2})\\ \end{aligned} \]

做一些变换

\[\begin{aligned} d_n&=nd_{n-1}+(n-1)d_{n-2}-d_{n-1}\\ d_n-nd_{n-1}&=-(d_{n-1}-(n-1)d_{n-2})\\ \end{aligned} \]

\(e_n=d_n- nd_{n-1}\),初项 \(e_1=-1\),且

\[\begin{aligned} e_n&=-e_{n-1}=(-1)^n \end{aligned} \]

那么

\[\begin{aligned} d_n&=nd_{n-1}+(-1)^n\\ \frac{d_n}{n!}&=\frac{d_{n-1}}{(n-1)!}+\frac{(-1)^n}{n!} \end{aligned} \]

\(f_n=d_n/n!\),初项 \(f_0=1\),于是

\[\begin{aligned} f_n&=f_{n-1}+\frac{(-1)^n}{n!}\\ &=\sum_{i=0}^n\frac{(-1)^i}{i!}\\ \end{aligned} \]

那么错排数的指数生成函数为

\[\frac{e^{-x}}{1-x} \]

这和第二种方法推出来是一样的。

posted @ 2022-10-31 08:41  ez_lcw  阅读(130)  评论(0编辑  收藏  举报