kkk
作者:互联网
1.装错信封问题(错排问题)
一个人写了 \(n\) 封信,以及有 \(n\) 个不同的信封,他把这 \(n\) 封信都装错了信封,问都装错的方案数有多少种。
2.问题的由来
错排问题最早可以追溯到十八世纪,最早被尼古拉·伯努利和欧拉研究,因此历史上也称为伯努利-欧拉的装错信封的问题。“装错信封问题”也被欧拉成为“组合数论的一个秒题”。
3.解法1(递推)
4.解法2(容斥)
\[\sum_{i=0}^n(-1)^i{n\choose i}=[n=0] \]5.解法3(生成函数)
6.解法4(二项式反演)
该方法最为优美,但需要二项式反演的引理。
引理 1(组合恒等式):
\[{n\choose m}{m\choose r}={n\choose r}{n-r\choose m-r} \]证明:
\[\begin{aligned} {\rm LHS}&=\frac{n!}{m!(n-m)!}\frac{m!}{r!(m-r)!}\\ &=\frac{n!}{r!(n-r)!}\frac{(n-r)!}{(n-m)!(m-r)!}\\ &={n\choose r}{n-r\choose m-r}={\rm RHS} \end{aligned} \]引理 2(二项式反演):当 \(n\in\Z\) 时
\[f(n)=\sum_{i=0}^n{n\choose i}g(i)\Leftrightarrow g(n)=\sum_{i=0}^n(-1)^{n-i}{n\choose i}f(i) \]证明(这里仅证明必要条件,充分条件同理):
\[\begin{aligned} {\rm RHS}&=\sum_{i=0}^n{n\choose i}\sum_{j=0}^i(-1)^{i-j}{i\choose j}f(j)\\ &=\sum_{j=0}^n\sum_{i=j}^n(-1)^{i-j}{n\choose i}{i\choose j}f(j)\\ &=\sum_{j=0}^n\sum_{i=j}^n(-1)^{i-j}{n\choose j}{n-j\choose i-j}f(j)\\ &=\sum_{j=0}^n{n\choose j}f(j)\sum_{i=j}^n(-1)^{i-j}{n-j\choose i-j}\\ &=\sum_{j=0}^n{n\choose j}f(j)\sum_{i=0}^{n-j}(-1)^i{n-j\choose i}\\ &=f(n)={\rm LHS} \end{aligned} \]注意到证明使用了交换求和顺序、引理1,甚至使用了容斥中的结论!其实二项式反演的本质就是容斥。
由于 \({n\choose m}={n\choose n-m}\),于是我们可以直接
\[\sum_{i=0}^n{n\choose i}D_{n-i}=\sum_{i=0}^n{n\choose i}D_i=n!\Rightarrow D_n=\sum_{i=0}^n(-1)^{n-i}{n\choose i}i!=n!\sum_{i=0}^n\frac{(-1)^i}{i!} \]标签:frac,sum,反演,装错,choose,kkk,rm 来源: https://www.cnblogs.com/ac-evil/p/14659728.html