[轉]容斥原理與多重集合{理論}
本文轉自http://blog.csdn.net/ACdreamers/article/details/9923955
原博主:ACdreamers
首先介紹一個重要定理:
設S是有k種類型對象的多重集合,每種元素均具有無限的重復數。那麽S的r組合的個數等於:
問題一:多重集合的組合問題
問題描述:給定3個a,4個b,5個c,現在要選10個元素,求一共有多少種組合?
分析:本問題就是相當於求S={3·a,4·b,5·c}的10組合數。
首先,多重集合的組合有一個定理,定理描述如下:
設S是有k種類型對象的多重集合,每種元素均具有無限的重復數,那麽S的r組合的個數等於:
那麽既然這樣,我們令S∞={∞·a, ∞·b,∞·c},那麽S的10-組合數為
設集合A是S∞的10-組合全體,則|A|=66,現在要求在10-組合中的a的個數小於等於3,b的個數小於等於4,c的個數小於等
於5的組合數.
定義性質集合P={P1,P2,P3},其中:
P1:10組合中a的個數大於等於4;
P2:10組合中b的個數大於等於5;
P3:10組合中c的個數大於等於6;
將滿足性質Pi的10-組合全體記為Ai(1≤i≤3).
那麽,A1中的元素可以看作是由S∞的10-4=6組合再拼上4個a構成的,所以
同理有:,,
所以根據容斥原理,原問題的解為:
問題二:方程解的個數問題
(1)問題描述:已知非負整數不大於7,求方程整數解的個數。
分析:其實用容斥,跟上題一樣,先求出總數,因為不可能出現兩個或兩個以上的數大於等於8,所以這裏就簡單很多了。
首先,S的10-組合數為:,由於只會出現中的一個大於等於8的情況,所以四種情況一樣的,
其結果都是,所以問題的解就是286-4*10=246
(2)問題描述:求方程整數解的個數,其中
分析:對於這個問題需要先轉化一下就跟上題一樣了。
令:,然後就有,此類問題不再贅述。答案為21
問題三:集合劃分問題
問題描述:將一個n元集合劃分為r個非空子集,並給每個子集標上號1,2,3,...r,求劃分方案數。
分析:設S為將n元集劃分成有序r部分的全部劃分方案集,註意這裏每一部分可以為空,那麽我們用總數減去為空的情況就可
以了,那麽進一步有一個不為空,兩個不為空,三個不為空,...等等。這樣我們就可以容斥。
我們知道 ,,
所以最後得到方案數為:
[轉]容斥原理與多重集合{理論}