組合數學(1)----錯位排列
整理自Richard A.Brualdi的《組合數學》
1.定義
如果定義全排列 1~n,
那么 一個排列滿足 任意的i都滿足a[i]!=i,稱之為錯位排列。
定義集合元素個數為n的錯位排列個數為\(D_n\)
比如這些問題:
一個聚會上,10位紳士查看他們的帽子。有多少種方式使得這些紳士中沒有人能夠拿到他們最開始的帽子?
把一個單詞打亂,多少種可能新單詞和舊單詞每一位都不一樣?
諸如此類。
2.遞推公式
錯位排列有兩種遞推公式
第一: \(D_n = (n-1)(D_{n-1}+D_{n-2})\)
第二: \(D_n = nD_{n-1}+(-1)^{n}\)
其中1,2式子均滿足\(D_1 = 0,D_2 = 1\)
下面給出《組合數學》中的證明:
假設\(n >=3\),考慮\(\{1,2...,n\}\)的\(D_n\)個錯位排列
來看看第一個位置的情況:
它可以是除1以外的任何數字,那么一共有\(n-1\)種情況並且每一種情況所產生的排列數都應該相同,我們設為\(d_n\)
也就是說 \(D_n = (n-1)d_n\)
現在來看看\(d_n\):
因為第1個位置可以是除1以外的任何數,並且產生排列數相同。
出於方便,我們假設第1個位置的數是2:
確定了第一個位置之后我們發現只需要討論第二個位置是不是1這是一個特殊的點。
如果第2個位置是1,那接下來的\(n-2\)個位置等價於n個元素中有兩個元素調換了位置。
那我們可以把他們踢出去,他們已經不影響問題了。
而剩下的元素將繼續進行錯位排列,也就是 \(D_{n-2}\)。
如果第2個位置不是1,這時候來重新陳述一下問題:
第2個位置不能是1,第3個位置不能是3,第4個位置不能是4.....第n個位置不能是n
這個問題是不是似曾相識?
是的,又是一個錯排,這個錯排只少了一個位置,所以他是\(D_{n-1}\)。
得到:\(d_n = D_{n-1}+D_{n-2}\)
聯立之前的式子就是\(D_n = (n-1)(D_{n-1}+D_{n-2})\)
再將這個式子不斷地遞歸求解就會得出\(D_n = nD_{n-1}+(-1)^{n}\)
3.通項公式
先直接給出結論(uysy這個也沒啥用,時間復雜度也是O(n)的)
\(D_n = n!(1-\frac{1}{1!}+\frac{1}{2!}-\frac{1}{3!}+...(-1)^n\frac{1}{n!})\)
這個問題需要用到容斥定理的一個結論。
之后在容斥定理的總結中給出(莫比烏斯反演真的看不懂啊* ^ *)