错排问题

科普向~

最近总是看到错排,感觉很有趣的样子。。。

错排问题是指:求1~n的排列P,使得 P≠ i 的方案数。

递推

设f[i]表示i个数的错排方案数,称有k个数在自己位置上的错排为k不动排。对于i-1个数已经形成的错排,添加一个i之后,可以把i与前面i-1个数中的任意一个交换,使得成为错排;对于有一个数不满足错排的方案数,显然等于f[i-1]×i,那么对于i-1个数已经形成的1不动排,可以把i与前面排在自己位置上的那个数交换,使得成为错排;由于1~n的排列={错排,1不动排,2不动排,...,n不动排},而上述交换i和前面一个数的方法显然可以通过1~i-1的全排列生成1~i的全排列,但是满足交换一个数是错排的,只有上述两种情况,所以f[i]=(i-1)×(f[i-1]+f[i-2])。至于通项公式没必要去推吧。。。(其实我不会)留坑。

容斥原理

先来证明容斥原理吧。。

注:下述大写字母都代表集合

容斥原理(其实是容斥原理的直接推论,但是貌似比本源的容斥原理更常用,本源的容斥原理是关于集合并的):
\[\left| S_1\cup S_2 \cup S_3 \cup ... \cup S_n\right|=\sum_{i=1}^n\left| S_i\right|+(-1)\sum_{0<i<j\le n}^n\left| S_i \cap S_j \right|+\sum_{0<i<j<k\le n}^n\left| S_i \cap S_j \cap S_k \right|+...+(-1)^{n+1}\left| S_1\cap S_2 \cap S_3 \cap ... \cap S_n \right|\]

证明(组合恒等式法):

设\(C_n^k=\binom{n}{k}\)表示组合数,\(A_n^k\)表示排列数。

引理(组合恒等式):
\[\sum_{i=0}^k(-1)^{i}C_k^i=0\]

证明:由\((1-1)^k\)展开立得。

我们只需证明,在左边中的元素\(x\)在右边只出现一次即可。不妨设\(x\subset S_1,x\subset S_2,x\subset S_3,...,x\subset S_k\),那么\(x\)在右边第一项中出现的次数等于\(C_k^1\),在第二项中等于\(C_k^2\),在第三项中等于\(C_k^3\),直到第k项等于\(C_k^k\),之后的项中不再有\(x\)出现,而根据引理,我们知道
\[\sum_{i=1}^k(-1)^{i+1}C_k^i=1\]

\(x\)在右边也只出现了一次,所以成立。得证。

回到错排问题上来。修改k不动排列的定义为:k个元素在自己的位置上,其他元素随意排的方案数。由容斥原理显然,错排数=全排列数-1不动排数+2不动排数-3不动排数+...+(-1)nn不动排数。设D表示错排数,所以
\[D=A_n^n-A_n^{n-1}+A_n^{n-2}+...+(-1)^{n}A_n^0 = n!\left\{ \frac{(-1)^2}{2!}+\frac{(-1)^3}{3!}+...+\frac{(-1)^n}{n!} \right\} =n!\sum_{r=2}^n \frac{(-1)^r}{r!}\]。是为上面那个递推式的通项。

二项式反演

二项式反演是指:

\[ \begin{equation}
a_n=\sum_{k=0}^nC_n^k b_k \Longleftrightarrow b_n=\sum_{k=0}^{n}(-1)^{n-k}C_n^k a_n\end{equation} \]

好像在OI中没啥用吧?不过在WC13的时候被人提到过23333

upd:3:31 Naive!我真是日了狗啦!!!叫你狂!见识短!

证明:

由于\(C_n^kC_k^i=C_n^iC_{n-i}^{k-i}\)下式:

\[\begin{equation} \sum_{k=i}^n(-1)^{n-k}C_n^kC_k^i= \begin{cases} 0 &\mbox{\(i \lt n\)}\\ 1 &\mbox{\(i=n\)} \end{cases} \end{equation}\]

显然成立。

那么:

\[
\begin{equation}
\begin{aligned}
\sum_{k=0}^n(-1)^{n-k}C_n^ka_k
&=\sum_{k=0}^n(-1)^{n-k}C_n^k\left (\sum_{i=0}^{k}C_k^ib_i\right ) \\
& =\sum_{k=0}^n\left (\sum_{i=0}^{k}(-1)^{n-k}C_n^kC_k^i\right) b_i \\
& = b_n
\end{aligned}
\end{equation}
\]

设n个元素的错排数为\(D_n\),那么刚好k个元素错排数为:\(C_{n}^{n-k}D_k\),显然\(\sum_{k=0}^nC_{n}^{n-k}D_k=n!\)。

那么:

\[
\begin{equation}
\begin{aligned}
D_n &=\sum_{k=0}^{n}(-1)^{n-k}C_n^kk! \\
&= n! \sum_{k=0}^{n}(-1)^{n-k}\frac{1}{(n-k)!}\\
&= n! \sum_{r=0}^{n}\frac{(-1)^r}{r!}\\
&=n!\sum_{r=2}^{n}\frac{(-1)^r}{r!}
\end{aligned}
\end{equation}
\]

得到相同的结论。

 

留几个好玩的链接:

http://www.sec.ntnu.edu.tw/Monthly/102(356-365)/365-PDF/03-102036-%E6%8E%92%E5%AE%B9%E5%8E%9F%E7%90%86%E5%8F%8A%E6%87%89%E7%94%A8%E8%88%89%E4%BE%8B(%E6%9C%88%E5%88%8AOK).pdf

http://www.yau-awards.org/paper/%E7%AC%AC%E5%9B%9B%E5%B1%8A%E4%B8%98%E6%88%90%E6%A1%90%E4%B8%AD%E5%AD%A6%E7%BA%AF%E6%95%B0%E5%AD%A6%E5%A5%96%E8%B5%9B%E5%8C%BA%E8%AE%BA%E6%96%87/E/E09.%E5%85%B3%E4%BA%8E%E9%94%99%E6%8E%92%E9%97%AE%E9%A2%98%E7%9A%84%E6%80%9D%E8%80%83%E4%B8%8E%E8%AE%A8%E8%AE%BA.pdf

http://wenku.baidu.com/view/d298820879563c1ec5da7120.html

http://cs.tju.edu.cn/faculty/zhangkl/teaching/comb/lec10.pdf

http://blog.csdn.net/acdreamers/article/details/23840391

http://zh.wikipedia.org/zh/%E5%8F%8D%E6%BC%94

http://www.isnowfy.com/mobius-inversion/

http://wenku.baidu.com/view/38a846eb551810a6f52486a2

http://wenku.baidu.com/view/9e1a5829647d27284b735195.html

 

posted @ 2014-09-25 07:27  sbit  阅读(998)  评论(0编辑  收藏  举报