今天听课讲容斥,提到错排,突然发现错排公式什么的好像已经忘了233
努力地回忆了一下,算出前几项,终于还原出了那个递推式↓
f(n)=(n-1)*(f(n-1)+f(n-2))
根据人赢的教导,只要思(yi)考(yin)下错排的构造就能记住了
然后就认(meng)认(you)真(yi)真(yang)地思(yi)考(yin)了下
用自己的理解把这玩意儿整理了一下↓
先加一点平时我们说的错排通常是指1~n,f(i)≠i,
其实脑补一下,它也可以看成A,B两个集合,|A|=|B|,对于每一个Ai,都对应唯一Bi,不同Ai对应Bi不同,现在强行改变对应方式,仍然是一对一,但是每一个Ai对应的Bi都不再是之前那个Bi,问方案数。
假设要构造f(n),
首先,必须满足f(n)≠n,则第n位只能取1~n-1,且第n位取1~n-1的任何一个数都是等价的
令g(n)为前n位排好的方案数.
那么f(n)=g(n-1)*(n-1),
因为此时前n-1位数字不是1~n-1,而是1~n中除去任意x(x∈[1,n-1])的方案数,所以显然g(n-1)≠f(n-1)
对于没一个k(k属于[1,n-1])
存在前n-1位的构造根据第n个的摆放可以分成两种情况:
1) n放在第k位,k放在第n位,剩下n-2的数满足n-2的错排,方案数为f(n-2)
2) n不放在第k位,那么剩下n-1的数满足n-1的错排,方案数为f(n-1)
要满足两种情况不重复,就必须满足1~n-1的任意一种错排方案的前n-2个数的排列一定不等于任意一种1~n-2的错排方案
(很绕的一句话,不过显然是对的,因为假设存在相等,那么第n-1位只能放n-1,不满足错排
所以g(n-1)=f(n-1)+f(n-2)
f(n)=(f(n-1)+f(n-2))*(n-1)
所以就证好了
其中初值还是很容易确定的,因为肯定要结合实际意义的嘛
f(0)=1 不放
f(1)=0 只有一个数,一个位置,显然不成立
错排公式的原型长这样→f(n)=n![1/0!-1/1!+1/2!-1/3!+1/4!+...+(-1)^n/n!],可以通过容斥,递推式各种方法求,这里就不证了ww
【写的有漏洞的,欢迎路过大神吐槽】
2016-08-06 16:48:00
Ending.