容斥:错位排列
令 {1,2,...,n} 的一个错位排列,是一个排列 a1,a2,...,an,使得 a1=1,a2=2,...,an=n。
令 Dn 表示大小为 n 的错位排列的方案数。
组合意义
考虑对于首位放置共有 n−1 种选择,且每一种选择的方案数均相同。
令我们对于首位的放置为 2,现在考虑第 2 位处放置的数予以讨论。
在第 2 位处放置 1
则此时的排列为 2,1,a3,a4,...,an,使得 a3=3,a4=4,...,an=n。
显然,这与排列为 a1,a2,...,an−2,使得 a1=1,a2=2,...,an−2=n−2 的方案数相等。
故此时的方案数为 Dn−2。
在第2位处不放置 1
则此时的排列为 2,a2,a3,...,an,使得 a2=1,a3=3,...,an=n。
显然,这于排列为 a1,a2,...,an−1,使得 a1=1,a2=2,...,an−1=n−1 的方案数相等。
股此时的方案数为 Dn−1。
综上所述
通过运用数学归纳法,我们易知递推式为:
Dn=(n−1)(Dn−1+Dn−2)(n ≥ 3)
容斥原理
我们也可以通过容斥原理来对此题进行分析。
首先,我们对于存在 ai=i 的排列定义为重位排列。
用符号 Ti 表示存在至少 i 个重位的排列方案数。
我们考虑到对于所有的方案中不合法的方案即为重位排列。
但是对于重位排列中仍会有重复计数,于是运用容斥原理易得:
Dn=n!+i=1∑n(−1)iTi
考虑对于 Ti 的计数,首先选取出 i 个 ai 使得满足 ai=i ,此项选取贡献为 (in);然后对于剩下的 n−i 个数进行排列,此项选取贡献为 (n−i)! 。于是易知:
Ti=(in)(n−i)!
对于 i=0 即不存在重位排列的方案数进行验证发现也遵循此理,故易知:
Dn=i=0∑n(−1)i(in)(n−i)!
拓展
我们主要对上述结论进行梳理和部分性质的引导拓展。
令 fi=Di−iDi−1,易知:
Dn=(n−1)⋅(Dn−1+Dn−2)(n ≥ 3)
Dn−nDn−1=−(Dn−1−(n−1)Dn−2)(n ≥ 3)
fn=−fn−1
fn=(−1)n−kfk
令 k=2 时,手玩得 D1=0,D2=1,易知:
Dn−nDn−1=(−1)n−2(D2−2D1)(n ≥ 3)
Dn=nDn−1+(−1)n−2(n ≥ 3)
我们发现这样的式子类似于关于阶乘的公式:
n!=(n−1)((n−1)!+(n−2)!)(n ≥ 3)
另,联想到自然常数 e−1 的无穷级数展开式与关于错位排列的另一个公式如此相似:
e−1=1−1!1+2!1−3!1+4!1−...
e−1=n!Dn+i=n+1∑∞(−1)ii!1
令事件 E 为随机选出 { 1,2,...,n } 的一个排列是一个错位排列,则易知其概率 Prob(E)=n!Dn。