http://chowkafat.net/Enumeration6.html
點算的奧秘:容斥原理基本公式
「容斥原理」(Principle of Inclusion and Exclusion)(亦作「排容原理」)是「點算組合學」中的一條重要 原理。但凡略為複雜、包含多種限制條件的點算問題,都要用到這條原理。現在首先從一個點算問題說起。
例題1:設某班每名學生都要選修至少一種外語,其中選修英語的學生人數為25,選修法語的學生人 數為18,選修德語的學生人數為20,同時選修英語和法語的學生人數為8,同時選修英語和德語的學生人數為13 ,同時選修法語和德語的學生人數為6,而同時選修上述三種外語的學生人數則為3,問該班共有多少名學生?
答1:我們可以把上述問題表達為下圖:
把頭三條等式加起來,我們得到A+B+C+2D+2E+2F+3G = 63。可是這結果包含了多餘的D、E、F和G,必須設法把 多餘的部分減去。由於等式(4)-(6)各有一個D、E和F,若從上述結果減去這三條等式,便可以把多餘的D、E和 F減去,得A+B+C+D+E+F = 36。可是這麼一來,本來重覆重現的G卻變被完全減去了,所以最後還得把等式(7)加 上去,得最終結果為A+B+C+D+E+F+G = 39,即該班共有39名學生。□
在以上例題中,給定的資料是三個集合的元素個數以及這些集合之間的交集的元素個數。在該題的解答中,我 們交替加上及減去這些給定的資料。如果我們用S1、S2和S3分別代表選修 英語、法語和德語學生的集合,那麼我們要求的答案就是|S1 ∪ S2 ∪ S3|,而該題的解答則可以重新表達為
|S1 ∪ S2 ∪ ... Sn| = | (|S1| + |S2| + ... |Sn|) |
− (|S1 ∩ S2| + |S1 ∩ S3| + ... |Sn − 1 ∩ Sn|) | |
+ (|S1 ∩ S2 ∩ S3| + |S1 ∩ S2 ∩ S4| + ... |Sn − 2 ∩ Sn − 1 ∩ Sn|) | |
− (|S1 ∩ S2 ∩ S3 ∩ S4| + ... |Sn − 3 ∩ Sn − 2 ∩ Sn − 1 ∩ Sn|) | |
...... | |
+ (−1)n − 1 |S1 ∩ S2 ∩ ... Sn − 1 ∩ Sn| (1) |
我們還可以把上式化簡,方法是引入一個新的變項Sn, k來代表上式等號右邊的第k行。 Sn, k是由C(n, k)個項加起來的總和,每個項都是由S1、S2 ... Sn這n個集合中抽r個出來構成的交集的元素個數。舉例說,當n = 5,k = 3時,S5, 3 是由C(5, 3) = 10個項加起來的總和,這10個項都是由S1 ... S5這5個集合中抽3個出 來構成的交集的元素個數,其中一個是|S2 ∩ S4 ∩ S5|,其餘類 推。利用Sn, k以及Σ求和符號,我們便可以把上面的「容斥原理」公式大大簡化為:
我們把上述推理推廣至一般情況,即考慮那些包含於k個集合的元素。每個這類元素都出現於第1行的其中 C(k, 1) = k個集合,並且出現於第2行的其中C(k, 2)個交集,並且出現於第3行的其中C(k, 3)個交集...並且 出現於第k行的其中C(k, k) = 1個交集(註1)。總括而言,每個這類元素在公式中被加的次數為
Σ1 ≤ r ≤ k(−1)r − 1 C(k, r) | = − Σ1 ≤ r ≤ k(−1)r C(k, r) |
= − [Σ0 ≤ r ≤ k(−1)r C(k, r) − (−1)0 C(k, 0)] | |
= − Σ0 ≤ r ≤ kC(k, r) (−1)r + 1 |
在應用上述「容斥原理」公式(1)時,我們必須逐一找出所有集合以及各種交集的元素個數,有時這是頗為繁瑣 的工作,會令上述公式失去價值,因此「容斥原理」一般應用於「可交換集合」(Exchangeable Sets)。如果從 n個集合S1、S2 ... Sn中任意抽取k個出來(1 ≤ r ≤ n),所得交集 的元素個數只跟k有關,而跟抽取結果無關,則我們說這n個集合是「可交換」的。換句話說,不論是由哪k個集 合構成的交集,所得交集的元素個數都是同一個數字。
上面「容斥原理」公式(1)的第k行的每一項都是由k個集合構成的交集的元素個數。如果S1、 S2 ... Sn是「可交換集合」,那麼該行的每一項都是同一個數字,可不妨用符號 nk來代表。由於該行共有C(n, k)個項,所以該行可簡化為(−1)k − 1 C(n, k) nk。因此,「可交換集合」的「容斥原理」公式便是
例題2:從26個英文字母中(可重覆地)抽取10個出來排成字串(String)(無需考慮這個字串是否構成一 個英文單詞),其中不可包含全部5個元音字母(即A、E、I、O、U),問有多少種排法?
答2:利用「容斥原理」解題的關鍵在於,把原題表達為適當的集合。就本題而言,如果我們用 SA來代表所有由10個字母組成但不含A的字串集合...用SU來代表所有由10個字母組成 但不含U的字串集合,那麼本題所要求的答案就是|SA ∪ SE ∪ SI ∪ SO ∪ SU|。由於5個元音字母具有平等的地位,從SA、 SE、SI、SO和SU這5個集合中任意抽取k個出來所構成的交集 的元素個數都是一樣的,所以這5個集合是「可交換」的。因此我們可以用上面的公式(3)來解題,但須先求得 nk (1 ≤ k ≤ 5)的值。
我們先求n1的值,這個值相當於由10個字母組成但不含A、E、I、O、U中某一個字母的字串的數目 。由於撇除了一個字母,我們可以從餘下的25個字母中(可重覆地)抽取10個出來排成字串,這是一個「無限重 覆排列」問題,應共有2510個這樣的字串,即n1 = 2510。
接著考慮n2,這個值相當於由10個字母組成但不含A、E、I、O、U中某兩個字母的字串的數目。由 於撇除了兩個字母,我們可以從餘下的24個字母中(可重覆地)抽取10個出來排成字串,因此n2 = 2410。讀到這裡,相信讀者應能看到nk = (26 − k)10。
最後,運用上面公式(3),本題的答案是
例題3:現要把一對可區別的火星人、一對可區別的木星人和一對可區別的土星人安排坐在一排共6個 座位上。如規定同一類外星人不得坐在相鄰的位置上,問有多少種不同坐法?
答3:如果我們用U代表由各種不加限制的坐法組成的集合,並用SM(SJ、 SS)代表由兩個火星人(木星人、土星人)坐在相鄰位置的各種坐法組成的集合,那麼本題要求的答 案就是|SM' ∩ SJ' ∩ SS'|。本題的SM、 SJ和SS顯然是「可交換」的集合,因此可以用上面的公式(5)解題。
首先求|U|的值。由於6個外星人是可區別的,我們不妨用M1、M2、J1、 J2、S1、S2代表他們(其中M、J和S分別代表火星人、木星人和土星人)。 因此|U|的值等於把上述6個符號進行「全排列」的問題,故|U| = 6!。
接著求n1的值,這個值相當於兩個火星人(或木星人、土星人)坐在相鄰位置的各種坐法的總數。由 於M1、M2總是聚在一塊,我們可以先把M1和M2合併為一個符 號M,然後求這個M與其餘4個符號進行「全排列」的總數,這個數應為5!。接著考慮M的「內部構造」, M1和M2有兩種可能形式構成M,即M1-M2和 M2-M1。總上所述,得n1 = 5! × 2。
接著求n2的值,這個值相當於兩個火星人以及兩個木星人(或其他組合)坐在相鄰位置的各種坐法的 總數。類似上段的做法,我們可以先把M1和M2以及J1和J2合 併為兩個新的符號M和J,然後求M、J與其餘2個符號進行「全排列」的總數,這個數應為4!。接著考慮M和J的 「內部構造」,各有兩種可能形式。總上所述,得n2 = 4! × 22。
接著求n3的值,這個值相當於兩個火星人、兩個木星人和兩個土星人坐在相鄰位置的各種坐法的總 數。同樣,我們可以先把M1和M2、J1和J2以及S1 和S2合併為三個新的符號M、J和S,然後求M、J和S進行「全排列」的總數,這個數應為3!。接著考 慮M、J和S的「內部構造」,各有兩種可能形式。總上所述,得n3 = 3! × 23。
最後,運用上面的公式(5),求得本題答案為
|U| − C(3, 1) n1 + C(3, 2) n2 − C(3, 3) n3 | |
= | 6! − 3 × 5! × 2 + 3 × 4! × 22 − 1 × 3! × 23 |
= | 720 − 720 + 288 − 48 |
= | 240 □ |
註1:如果讀者不明白本段的推理,可以嘗試用一個具體的例子代入上述推理,這樣便能較易明白。設n = 5,k = 4,並且假設某元素x包含於S1、S3、S4和S5這4個集合中。 那麼x出現於第1行的其中C(4, 1) = 4個集合,並且出現於第2行的其中C(4, 2) = 6個交集,這6個交集分別是 S1 ∩ S3、S1 ∩ S4、S1 ∩ S5、S3 ∩ S4、S3 ∩ S5和 S4 ∩ S5。在第3行中,x出現於C(4, 3) = 4個交集,這4個交集分別是 S1 ∩ S3 ∩ S4、S1 ∩ S3 ∩ S5、S1 ∩ S4 ∩ S5和S3 ∩ S4 ∩ S5。在4行中,x只出現於C(4, 4) = 1個交集,此即S1 ∩ S3 ∩ S4 ∩ S5。請注意x不會出現於第5行。總括而言,x在公式 中被加的次數為4 − 6 + 4 − 1 = 1次。
註2:這裡用S'代表集合S的補集(Complement Set),即S' = U − S。
註3:這裡其實應用了集合論中的一個原理,即若T是S的子集,那麼|S − T| = |S| − |T|。
No comments:
Post a Comment