1. 程式人生 > >組合數學:容斥原理及其應用

組合數學:容斥原理及其應用

容斥原理

例題:從1到1000中不能被5,6,8整除的整數個數。 令P1具有被5整除的性質,P2具有被6整除的性質,P3被8整除性質。 S是前1000個正整數的集合希望求出三個性質同時不滿足的個數 |A1| = floor(1000/5) = 200;|A2| = floor(1000/6) = 166 |A3| = floor(1000/8) = 125 |A1交A2|是可以同時被56整除的,同時被整除就是當且僅當被他們最小公倍數整除 lcm{5,6} = 30 所以|A1 A2| = floor(1000/30)  = 33; 同理能被5,6,8都整除的是lcm{5,6,8} = 120  |A1 A2 A3| = floor(1000/120) = 8 所以|~A1 ~A2 ~A3| = 1000 - (200+166+125) + (33+25+41) - 8 = 600 例題:M,A,T,H,I,S,F,U,N存在多少排列使得MATH,IS,FUN都不能作為連續字母出現? 令P1是S排列中包含 MATH性質,P2是包含單詞IS連續字母的性質,P3是具有包含單詞FUN連續字元的性質。 |S| = 9! = 362880 A1可以看做6個字母MATH,I,S,F,U,N的排列因此|A1| = 6! = 720 A2是M,A,T,H,IS,F,U,N八個字母排列 |A2| = 8! = 40320 A3是排列7個字母M,A,T,H,I,S,FUN  |A3| = 7! = 7040 然後求滿足2個性質的排列 |A2 A1| 是MATH,IS,F,U,N  其他同理|A1 A2| = 5!  |A2 A3| = 6!  |A1 A3| = 4! |A1 A2 A3|是MATH IS FUN的排列是3! 所以|~A1 ~A2 ~A3| = 362880 - 720 - 40320 -5040 + 120 + 24 + 720 -6 = 317658 例題: 從0到99999有多少個包含數字2,5和8的整數? S是從0到99999的整數集合。令P1具有整數不包含數字2的性質,P2具有整數不包含數字5的性質 P3具有整數不包含數字8的性質。 a0 = 10^5  a1 = 9^5  a2 = 8^5  a3 = 7^5 可以知道本題答案是a0 - 3*a1 + 3*a2 - a3

具有重複的組合

例題確定多重集T={3.a,4.b,5.c}的10組合個數 T* = {inf .a ,inf b,inf *c} 將P1為T*的10-組合多餘3個阿P2為10-組合多於4個b的性質 p3為T*10組合具有多餘5個C的性質。此時T的10-組合就是T*的10組合不具有性質P1P2P3的10-組合 由於|S| = (r+k-1,r) = (10+3-1,10) = 66 集合A1由a至少出現4次的T*的所有10-組合組成。將A1中任何一個這樣的10-組合去掉4個a,那麼剩下的T*的一個6-組合 所以|A1| = (6+3-1,6) = 28 類似A2的10組合個數等於T*的5組合個數|A2| = (5+3-1,5) = 21 |A3| = (4+3-1,4) = 15 |A1 A2|由a至少出現4次b至少出現5次的T*10-組合。如果去掉4個a和5個b那麼剩下的是T*的1組合。所以|A1 A2| = (1+3-1,1) = 3 A1 A3是0組合|A1 A3| = (0+3-1,0) = (2,0) = 1,A2 A3沒有10組合 |A1 A2 A3|同樣也沒有10-組合 得到|~A1 ~A2 ~A3| = 66 - (28+21+15) + (3+ 1 + 0) = 6 例題: 1<=x1<=5  -2<=x2<=4 0<=x3<=5  3<=x4<=9的方程 x1+x2+x3 +x4 = 18的解的個數? 先領y1 = x1 - 1 y2 = x2+2 y3 = x3,y4 = x4 -3 方程為y1+y2+y3+y4 = 16 0<=y1<=4 ,0<=y2<=6  0<=y3<=5  0<=y4<=6 S的所有非負整數解結合為|S| = (16+4-1,4) = 969 令P1為y1>=5  P2為性質y2>=7  p3為性質y3>=6  p4為性質y4>=7 算A1做變數代換 z1 = y1-5 z2 = y2 =z3=y3,z4 = y4 z1+z2+z3+z4 = 11    |A1| = (14,11) = 364 類似|A2| = 220 |A3| = 286 |A4| = 220 |A1 A2|由y1>=5 y2>=7組成,那麼變數代換u1 = y1-5  u2 = y2-7  u3  = y3 u4 = y4 所以u1+u2+u3+u4 = 4   |A1 A2| = (7,4) = 35 類似|A1 A3| = 56...|A3 A4| = 20 而任意三個交都是大於值的所以 |~A1 ~A2 ~A3 ~A4| = 969 - (364 + 220 +286 + 220 ) +(35 +56+35+20+10+20) = 55


錯位排列

對於每一個元素都有一個特定的位置,現在要求集合X中的沒有元素在指定位置的排列數目。 定理:Dn代表n個數的錯排的總數 Dn = n! (1 - 1/1! + 1/2! - 1/3! + ---+(-1)^n 1/n!) 證明: 領S是{1,2,...n}的全部n!個排列的集合。對於J=1,2...n讓Pj為排列中j在自然位置上的性質。加入ij = j 則{1,2...n}的排列i1i2...in就具有pj。 Dn = |~a1~a2..~an| A1是  1i2...in的排列|A1| = (n-1)!  |Aj| = (n-1)!在A1 A2的排列是1 2 i3..in所欲|AI Aj| = (n-2)!....|A1 A2 ...AK| = (n-k)! 由容斥原理Dn = n! - (n,1)(n-1)! + (n,2)(n-2)! - (n,3)(n-3)! ....(-1)^n(n,n)0! = n! - n!/1 + n!/2 -n!/3 + --- (-1)^n n!/n! = n! (1 - 1/1! + 1/2! -1/3! +.. + (-1)^n 1/n!) 而錯排的概率為 Dn/n! 由於泰勒展開式 e-1 遞推關係 Dn = (n-1) (Dn-2 + Dn-1) 證明:我們將第1位應該從後面N-1箇中選擇,那麼第2位要麼是1要麼不是1 當I2 = 1的時候 i3 i4..in是n-2個數的錯排。而i2!=1的時候 i2i3..in是1不在第一個位置,3不在第二個位置。。相當於i1.i2..in的錯排 所以Dn = (n-1)(Dn-2 + Dn-1) 例題:一次聚會上n個男,n個女,這n個女能夠有多少種方法選擇男半跳舞第一次?每個人都換舞伴的時候第二次選擇又有多少種方法? 第一次顯然n!種方法。第二次自己對應的值就是男伴不是第一次的舞伴所以選擇的錯排數是Dn*Dn

帶有絕對禁止位置的排列

{1,2,..n}的子集用P(X1,X2,....Xn)表示{1,2,...n}的所有排列i1i2i..in的集合 使得i1不在x1內,i2不在x2內。。。in不在xn內 例題:n=4,X1={1,2},x2={2,3},x3={3,4},x4={1,4}此時(X1,X2,X3,X4)由{1,2,3,4}所有滿足 i1!=1,2 i2!=2,3 i3!=3,4 i4!=1,4的排列i1i2i3i4組成集合P(X1,X2,X3,X4)只包含兩個排列 3412 和 4123 所以P(X1,X2,X3,X4) = 2 用容斥原理可以得到一般的公式為: n! - r1(n-1)! + r2(n-2)! - ... + (-1)^k rk(n-k)! _... 例題: 確定將6個非攻擊車放到下面6行6列的棋盤的方法書,禁止的放置位置由圖上標出了:
X
X X
X X
X X
r1等於禁放位置數目,r1 = 7 下面計算r2是將2個非攻擊性車放置到禁止的位置上方法書, 而r2 = 1 + 2 + 3*4 = 15但是需要滿足非攻擊 對於r3需要F1中2個和F2中1和或者F1中1個F2中2個 r3 = 1*4 + 3*2 = 10 對於r4則需要F1中2個和F2中兩個r4 = 1*2 = 2 r5 = r6 = 0; 所以沒有車佔據禁止位置的方法數為: 6! - 7*5! + 15*4! - 10*3! + 2*2! = 226

莫比烏斯反演

組合數學上莫比烏斯反演證明不太好懂,可以先從數論及其應用這本書入手。

設f為算術函式,f的和函式F(n) = sigma(f(d))(d|n) 它是根據f的值決定的。

那麼是否存在一種關係用F求出f我們令n=1,2,3...8則此時有

F(1) = f(1)

F(2) = f(1) + f(2)

F(3) = f(1) + f(3)

....

F(8) = f(1) + f(2) + f(4) +f(8)

我們可以解除f(n)

f(1) = F(1)

f(2) =F(2) - F(1)

..

f(8) = F(8) - F(4)

注意到f(n)是形式為+-F(n/d)的一些項的和,所以可能存在這樣的等式

f(n) = sigma(u(d)F(n/d));

其中u是算術函式等式成立的話,我們可以計算出u(1) = 1u(2) = -1

u(7)= -1 u(8) = 0又有F(p) =f(1) + f(p)給出f(p) = F(p) - F(1)其中p是素數

則u(p) = -1又因為F(p*p) = f(1) + f(p) + f(p*p)

f(p*p) = F(p*p) - (F(p)-F(1)) -F(1) = F(p*p) -F(p)

u(p*p) = 0所以對於任意的素數p切k>1有u(p^k) = 0

定義莫比烏斯函式u(n)定義

u(n) = 1 (n=1)

        = (-1)^r (n=p1p2..pr,其中pr為不同的素數) 

        = 0

例題:

u(330) = u(2.3.5.11) = (-1)^4 = 1 ,u(660) = u(2^2 .3 .5 .11) = 0

莫比烏斯函式u(n)是乘性函式

假設m與n是互素的正整數,為了證明u(n)是乘法性質函式證明u(n) = u(m)u(n)

考慮n=1或者m=1的情況成立

假設m和n中至少一個被素數平方整除,那麼mn也被素數平方整除則u(mn) = 0

考慮M和n都不會含有大於1的素數的平方因子,m = p1p2..pn

n = q1q2..qn其中q1q2..qn是不同的素數,由於mn互素,則mn是s+t個不同的互素乘積

所以u(mn) = (-1)^(s+t) = (-1)^s (-1)^t = u(m)u(n)

莫比烏斯函式的和函式在n出的值F(n) = sigma(u(d))(d|n)滿足

F(n) = 1 (n=1) F(n) = 0(n>1)

證明如下:n=1的時候F(1) = sigma(u(d)) = u(1) = 1

n>1的時候,假設p是素數,k是正整數

F(p^k) = sigma(u(d)) = u(1) + u(p) + u(p*p) +...u(p^k)

= 1+ (-1) +0 + 0... = 0;

假設n是大於1的正整數,素數分解為n = p1^a1p2^a2..pt^at所以F(n) = F(p1^a1)...F(pt^at)

從而F(n) = 0

莫比烏斯反演公式若f是算術函式F為f的和函式

F(n) = sigma(f(d))(d|n)則對於任意正整數n有f(n) = sigma(u(d)F(n/d)) (d|n)

sigma(f(d))(d|n) = sigma(u(d)sigma(f(e)(e|n/d) )) = sigma(sigma (u(d))f(e)) (e|n/d)

因為d|n e|(n/d)同樣有e|n 和 d|(n/e) 

所以化簡為 sigma( sigma( f(e) u(d))(d|(n/e)) (e|n))

由於 sigma (u(d) )= 0  除非 n/e = 1

sigma(u(d)F(n/d)) (d|n) = f(n) *1 = f(n)

入門題:

http://blog.csdn.net/qw4990/article/details/14055183