首页 > 其他分享 >错排问题的通项公式

错排问题的通项公式

时间:2023-01-29 00:55:05浏览次数:45  
标签:begin frac 公式 sum ge 通项 end 错排 equation

我们定义错排数 \(d_n\) 为满足下条件的排列的数目:排列的长度为 \(n\) 且不存在 \(i\) 使得 \(p_i=i\)。在此避开对 \(d_0\) 的讨论。它的递推式是 trivial 的:

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

并且显然有 \(d_1 = 0, d_2 = 1\)。

直接通过递推式求解通项公式是困难的(对笔者来说),《具体数学》中给出了另一个办法如下。

根据容斥原理,我们可以直接写出 \(d_n\) 的表达式:

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

其中第 \(k\) 项表示:从 \(n\) 个位置中选出 \(k\) 个,钦定它们排列正确;剩下 \((n-k)\) 个可以随便乱排;最后乘上容斥系数 \((-1)^k\)。(个人习惯:用 \(\binom{m}{n}\) 表示 \(C_m^n\)。)(当然,这个表达式也可以通过二项式反演得到。)

化简这个式子:

\[\begin{equation} \begin{split} d_n &= \sum_{k=0}^n (-1)^k \binom{n}{k} (n-k)! \\ &= n!\sum_{k=0}^n \frac{(-1)^k}{k!} \\ \end{split} \end{equation}\]

观察后面的式子,可以联想到 \(e^x\) 的 Maclaurin 展开式,即:

\[\begin{equation} e^x = \sum_{k \ge 0} \frac {x^k}{k!} \end{equation} \]

在 \((2)\) 式中取 \(x=-1\) ,得到:

\[\begin{equation} e^{-1} = \sum_{k\ge 0} \frac{(-1)^k}{k!} \end{equation} \]

这与 \((1)\) 的形式类似,于是我们希望用 \((3)\) 来表示 \((1)\) 。这引导我们分析两个式子的差的大小:

\[\begin{equation} \begin{split} n!\sum_{k>n}\frac{(-1)^k}{k!} &= n!\sum_{k\ge 0} \frac{(-1)^{k+n+1}}{(k+n+1)!} \\ &= \frac{(-1)^{n+1}}{n+1}\sum_{k\ge 0}(-1)^k\frac{(n+1)!}{(k+n+1)!} \\ &= \frac{(-1)^{n+1}}{n+1} \left(1-\frac 1 {n+2}+ \frac 1 {(n+2)(n+3)} - \dotsm \right) \end{split} \end{equation}\]

括号中的量可以轻易地用裂项的方法得到:它介于 \(1-\frac 1 {n+2} = \frac {n+1}{n+2}\) 和 \(1\) 之间。于是, \(n!/e\) 和 \(d_n\) 的差大约是 \(1/n\);更精确地,它介于 \(1/(n+1)\) 和 \(1/(n+2)\) 之间。

然而, \(d_n\) 是一个整数。所以,如果 \(n>0\),那么 \(d_n\) 必定就是我们将 \(n!/e\) 四舍五入之后的整数。而一个简单的表示四舍五入的方法是加上 \(0.5\) 之后向下取整;于是,这样就求出了我们想要的封闭形式:

\[d_n = \lfloor \frac{n!}{e}+\frac 1 2 \rfloor. \]

然而,这个公式并没有很大的实用价值,因为一般情况下 \(n!\) 的求值依然有着至少 \(O(n)\) 的复杂度。

标签:begin,frac,公式,sum,ge,通项,end,错排,equation
From: https://www.cnblogs.com/Martin-MHT/p/17071595.html

相关文章