1. 程式人生 > >[轉]容斥原理與多重集合{理論}

[轉]容斥原理與多重集合{理論}

csdn 描述 ref 兩個 一個 情況 uri 16px blog

本文轉自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部分的全部劃分方案集,註意這裏每一部分可以為空,那麽我們用總數減去為空的情況就可

以了,那麽進一步有一個不為空,兩個不為空,三個不為空,...等等。這樣我們就可以容斥。

我們知道技術分享圖片技術分享圖片技術分享圖片

所以最後得到方案數為:技術分享圖片

[轉]容斥原理與多重集合{理論}