科普向~
最近总是看到错排,感觉很有趣的样子。。。
错排问题是指:求1~n的排列P,使得 Pi ≠ 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_1cup S_2 cup S_3 cup ... cup S_n
ight|=sum_{i=1}^nleft| S_i
ight|+(-1)sum_{0<i<jle n}^nleft| S_i cap S_j
ight|+sum_{0<i<j<kle n}^nleft| S_i cap S_j cap S_k
ight|+...+(-1)^{n+1}left| S_1cap S_2 cap S_3 cap ... cap S_n
ight|]
证明(组合恒等式法):
设(C_n^k=inom{n}{k})表示组合数,(A_n^k)表示排列数。
引理(组合恒等式):
[sum_{i=0}^k(-1)^{i}C_k^i=0]
证明:由((1-1)^k)展开立得。
我们只需证明,在左边中的元素(x)在右边只出现一次即可。不妨设(xsubset S_1,xsubset S_2,xsubset S_3,...,xsubset 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!}
ight} =n!sum_{r=2}^n frac{(-1)^r}{r!}]。是为上面那个递推式的通项。
二项式反演
二项式反演是指:
[ egin{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_nend{equation} ]
好像在OI中没啥用吧?不过在WC13的时候被人提到过23333
upd:3:31 Naive!我真是日了狗啦!!!叫你狂!见识短!
证明:
由于(C_n^kC_k^i=C_n^iC_{n-i}^{k-i})下式:
[egin{equation} sum_{k=i}^n(-1)^{n-k}C_n^kC_k^i= egin{cases} 0 &mbox{(i lt n)}\ 1 &mbox{(i=n)} end{cases} end{equation}]
显然成立。
那么:
[
egin{equation}
egin{aligned}
sum_{k=0}^n(-1)^{n-k}C_n^ka_k
&=sum_{k=0}^n(-1)^{n-k}C_n^kleft (sum_{i=0}^{k}C_k^ib_i
ight ) \
& =sum_{k=0}^nleft (sum_{i=0}^{k}(-1)^{n-k}C_n^kC_k^i
ight) 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!)。
那么:
[
egin{equation}
egin{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