§D2.3包除原理の応用と鳩の巣原理の一般形

最終更新

和の法則は、互いに素な集合の合併についてしか使うことができません。集合が重なっているときに、重なりを数え直して補正する方法が包除原理です。「場合の数と確率統計」は、どの要素もちょうど一度だけ数えられることを確かめる形で包除原理を扱いました。本記事は、同じ原理を集合の個数についての帰納法によって証明し、二つの応用へ進みます。第一は、二つの有限集合のあいだの全射の個数です。第二は、与えられた数以下で、その数と互いに素である数の個数です。どちらも、直接数えることが難しい対象を、数えやすい対象の符号つきの和として表す例です。

後半では鳩の巣原理を扱います。「場合の数と確率統計」が扱った「n+1n+1個の対象をnn個の箱へ入れると、二個以上が入る箱がある」という形を、「平均以上の値をとる対象が存在する」という形まで一般化します。この一般形が結論するのは対象の存在だけであり、どの対象が条件を満たすのかは結論されません。

以下、集合はすべて有限集合とし、集合AAの要素の個数を∣A∣|A|と書きます。互いに素な有限集合の合併の要素の個数が各集合の要素の個数の和であること(和の法則、§D2.2 定理 2.1)を用います。

1 二つの集合の場合から一般の場合へ

包除原理の出発点は、二つの集合についての等式です。この等式は、和の法則だけから得られます。

補題 1.1 (二つの集合についての包除原理). 有限集合A,BA, Bについて

∣A∪B∣=∣A∣+∣B∣−∣A∩B∣|A \cup B| = |A| + |B| - |A \cap B|

が成り立つ。

証明. 三つの集合A∖BA \setminus B、A∩BA \cap B、B∖AB \setminus Aは互いに素であり、その合併はA∪BA \cup Bです。またAAは互いに素なA∖BA \setminus BとA∩BA \cap Bの合併、BBは互いに素なB∖AB \setminus AとA∩BA \cap Bの合併です。和の法則(§D2.2 定理 2.1)を三つの分解へ適用すると

∣A∪B∣=∣A∖B∣+∣A∩B∣+∣B∖A∣,|A \cup B| = |A \setminus B| + |A \cap B| + |B \setminus A|,∣A∣=∣A∖B∣+∣A∩B∣,∣B∣=∣B∖A∣+∣A∩B∣|A| = |A \setminus B| + |A \cap B|, \qquad |B| = |B \setminus A| + |A \cap B|

が得られます。後の二つの等式から∣A∖B∣=∣A∣−∣A∩B∣|A \setminus B| = |A| - |A \cap B|と∣B∖A∣=∣B∣−∣A∩B∣|B \setminus A| = |B| - |A \cap B|を求め、最初の等式へ代入すると

∣A∪B∣=(∣A∣−∣A∩B∣)+∣A∩B∣+(∣B∣−∣A∩B∣)=∣A∣+∣B∣−∣A∩B∣|A \cup B| = (|A| - |A \cap B|) + |A \cap B| + (|B| - |A \cap B|) = |A| + |B| - |A \cap B|

となります。▨

一般の個数の集合については、集合の個数についての帰納法によって次を示します。以下、[n]={1,2,…,n}[n] = \{1, 2, \dots, n\}と書きます。

定理 1.2 (包除原理).n≥1n \ge 1とし、A1,…,AnA_1, \dots, A_nを有限集合とすると

∣⋃i=1nAi∣=∑∅≠S⊆[n](−1)∣S∣+1∣⋂i∈SAi∣\left| \bigcup_{i=1}^{n} A_i \right| = \sum_{\varnothing \ne S \subseteq [n]} (-1)^{|S|+1} \left| \bigcap_{i \in S} A_i \right|

が成り立つ。右辺の和は、[n][n]の空でない部分集合すべてにわたる有限和である。

証明.nnについての単純帰納法(§A3.10 定理 1.1)で示します。

n=1n = 1のとき、[1][1]の空でない部分集合は{1}\{1\}だけであり、(−1)1+1=1(-1)^{1+1} = 1なので、右辺は∣A1∣|A_1|です。左辺も∣A1∣|A_1|なので、等式が成り立ちます。

nn個の有限集合について等式が成り立つと仮定し、有限集合A1,…,An+1A_1, \dots, A_{n+1}をとります。U=⋃i=1nAiU = \bigcup_{i=1}^{n} A_iとおくと補題 1.1により

∣⋃i=1n+1Ai∣=∣U∣+∣An+1∣−∣U∩An+1∣\left| \bigcup_{i=1}^{n+1} A_i \right| = |U| + |A_{n+1}| - |U \cap A_{n+1}|

です。分配律によりU∩An+1=⋃i=1n(Ai∩An+1)U \cap A_{n+1} = \bigcup_{i=1}^{n} (A_i \cap A_{n+1})なので、nn個の有限集合Bi=Ai∩An+1B_i = A_i \cap A_{n+1}(i=1,…,ni = 1, \dots, n)へ帰納法の仮定を適用することができます。∅≠S⊆[n]\varnothing \ne S \subseteq [n]について⋂i∈SBi=⋂i∈S∪{n+1}Ai\bigcap_{i \in S} B_i = \bigcap_{i \in S \cup \{n+1\}} A_iであることに注意すると、

∣U∣=∑∅≠S⊆[n](−1)∣S∣+1∣⋂i∈SAi∣,∣U∩An+1∣=∑∅≠S⊆[n](−1)∣S∣+1∣⋂i∈S∪{n+1}Ai∣|U| = \sum_{\varnothing \ne S \subseteq [n]} (-1)^{|S|+1} \left| \bigcap_{i \in S} A_i \right|, \qquad |U \cap A_{n+1}| = \sum_{\varnothing \ne S \subseteq [n]} (-1)^{|S|+1} \left| \bigcap_{i \in S \cup \{n+1\}} A_i \right|

が得られます。ここでS⊆[n]S \subseteq [n]に対しT=S∪{n+1}T = S \cup \{n+1\}とおくと、n+1∉Sn+1 \notin Sより∣T∣=∣S∣+1|T| = |S| + 1であり、(−1)∣S∣+1=(−1)∣T∣=−(−1)∣T∣+1(-1)^{|S|+1} = (-1)^{|T|} = -(-1)^{|T|+1}です。したがって

− ∣U∩An+1∣=∑T⊆[n+1], n+1∈T∣T∣≥2(−1)∣T∣+1∣⋂i∈TAi∣-\,|U \cap A_{n+1}| = \sum_{\substack{T \subseteq [n+1],\ n+1 \in T \\ |T| \ge 2}} (-1)^{|T|+1} \left| \bigcap_{i \in T} A_i \right|

となります。対応S↦S∪{n+1}S \mapsto S \cup \{n+1\}は、[n][n]の空でない部分集合の全体から、n+1n+1を含み要素の個数が22以上である[n+1][n+1]の部分集合の全体への全単射なので、右辺の和は過不足なく取られています。また∣An+1∣|A_{n+1}|はT={n+1}T = \{n+1\}に対応する項です。以上の三つを合わせると、n+1n+1を含む[n+1][n+1]の部分集合すべてと、n+1n+1を含まない空でない部分集合すべて、すなわち[n+1][n+1]の空でない部分集合すべてにわたる和が得られ、

∣⋃i=1n+1Ai∣=∑∅≠T⊆[n+1](−1)∣T∣+1∣⋂i∈TAi∣\left| \bigcup_{i=1}^{n+1} A_i \right| = \sum_{\varnothing \ne T \subseteq [n+1]} (-1)^{|T|+1} \left| \bigcap_{i \in T} A_i \right|

となります。▨

実際の数え上げでは、条件のどれも満たさない対象を数える形で使うことのほうが多くあります。

系 1.3 (どの条件も満たさない要素の個数).XXを有限集合、A1,…,AnA_1, \dots, A_nをXXの部分集合とすると

∣X∖⋃i=1nAi∣=∑S⊆[n](−1)∣S∣∣⋂i∈SAi∣\left| X \setminus \bigcup_{i=1}^{n} A_i \right| = \sum_{S \subseteq [n]} (-1)^{|S|} \left| \bigcap_{i \in S} A_i \right|

が成り立つ。ここでS=∅S = \varnothingの項は∣X∣|X|と読む。

証明.⋃i=1nAi⊆X\bigcup_{i=1}^{n} A_i \subseteq Xなので、和の法則(§D2.2 定理 2.1)により

∣X∖⋃i=1nAi∣=∣X∣−∣⋃i=1nAi∣\left| X \setminus \bigcup_{i=1}^{n} A_i \right| = |X| - \left| \bigcup_{i=1}^{n} A_i \right|

です。定理 1.2を代入すると

∣X∣−∑∅≠S⊆[n](−1)∣S∣+1∣⋂i∈SAi∣=∣X∣+∑∅≠S⊆[n](−1)∣S∣∣⋂i∈SAi∣|X| - \sum_{\varnothing \ne S \subseteq [n]} (-1)^{|S|+1} \left| \bigcap_{i \in S} A_i \right| = |X| + \sum_{\varnothing \ne S \subseteq [n]} (-1)^{|S|} \left| \bigcap_{i \in S} A_i \right|

となり、∣X∣|X|をS=∅S = \varnothingの項として和へ入れれば主張の形になります。▨

注意 1.4 (項の個数と、実際に計算する項).定理 1.2の右辺は2n−12^{n} - 1個の項からなり、nnが大きいと項の個数は指数的に増える。しかし、共通部分が空であるSSの項は00なので、実際に計算する必要があるのは共通部分が空でないSSについての項だけである。後の二つの応用では、共通部分の要素の個数が∣S∣|S|だけで決まるか、SSの要素の積だけで決まるので、和はnn個または約数の個数ぶんの項へまとまる。

2 全射の個数

nn元集合からkk元集合への写像は全部でknk^{n}個あります。このうち全射であるものを直接数えることは難しいので、全射でないものを取り除く形で数えます。全射でないとは、値としてとられない要素が少なくとも一つあることなので、「値iiをとらない」という条件をi=1,…,ki = 1, \dots, kについて並べれば、系 1.3を適用することができます。

命題 2.1 (全射の個数).n≥0n \ge 0、k≥1k \ge 1とする。[n][n]から[k][k]への全射の個数をSur(n,k)\mathrm{Sur}(n, k)と書くと

Sur(n,k)=∑j=0k(−1)j(kj)(k−j)n\mathrm{Sur}(n, k) = \sum_{j=0}^{k} (-1)^{j} \binom{k}{j} (k-j)^{n}

が成り立つ。ここで00=10^{0} = 1と読む。

証明.XXを[n][n]から[k][k]への写像の全体とすると、積の法則(§D2.2 定理 2.3)により∣X∣=kn|X| = k^{n}です。i∈[k]i \in [k]についてAi={ σ∈X:i∉σ([n]) }A_i = \{\, \sigma \in X : i \notin \sigma([n]) \,\}、すなわち値iiをとらない写像の全体とおきます。写像σ\sigmaが全射でないことと、あるiiについてσ∈Ai\sigma \in A_iであることは同値なので、全射の全体はX∖⋃i=1kAiX \setminus \bigcup_{i=1}^{k} A_iです。

S⊆[k]S \subseteq [k]について、⋂i∈SAi\bigcap_{i \in S} A_iはSSのどの要素も値にとらない写像の全体、すなわち[n][n]から[k]∖S[k] \setminus Sへの写像の全体です。∣[k]∖S∣=k−∣S∣|[k] \setminus S| = k - |S|なので、積の法則により∣⋂i∈SAi∣=(k−∣S∣)n\bigl| \bigcap_{i \in S} A_i \bigr| = (k - |S|)^{n}です。この値は∣S∣|S|だけで決まり、∣S∣=j|S| = jであるS⊆[k]S \subseteq [k]は(kj)\binom{k}{j}個あります(§D2.2 命題 3.1)。したがって系 1.3により

Sur(n,k)=∑S⊆[k](−1)∣S∣(k−∣S∣)n=∑j=0k(−1)j(kj)(k−j)n\mathrm{Sur}(n, k) = \sum_{S \subseteq [k]} (-1)^{|S|} (k - |S|)^{n} = \sum_{j=0}^{k} (-1)^{j} \binom{k}{j} (k-j)^{n}

が得られます。▨

例 2.2 (全射の個数の検算).n=k=3n = k = 3のとき、公式の値は

(30)33−(31)23+(32)13−(33)03=27−24+3−0=6\binom{3}{0} 3^{3} - \binom{3}{1} 2^{3} + \binom{3}{2} 1^{3} - \binom{3}{3} 0^{3} = 27 - 24 + 3 - 0 = 6

である。[3][3]から[3][3]への全射は全単射にほかならず、その個数は3!=63! = 6なので一致する。

n=4n = 4、k=3k = 3のとき、公式の値は

81−3⋅16+3⋅1−0=81−48+3=3681 - 3 \cdot 16 + 3 \cdot 1 - 0 = 81 - 48 + 3 = 36

である。別の数え方でも確かめる。[4][4]から[3][3]への全射では、ちょうど一つの値が二回とられ、残りの二つの値が一回ずつとられる。二回とられる値の選び方が33通り、その値をとる22元を[4][4]から選ぶ選び方が(42)=6\binom{4}{2} = 6通り、残る22元へ残る22値を割り当てる全単射が2!=22! = 2通りなので、積の法則により3⋅6⋅2=363 \cdot 6 \cdot 2 = 36となり、一致する。

n=2n = 2、k=3k = 3のとき、公式の値は

(30)32−(31)22+(32)12−(33)02=9−12+3−0=0\binom{3}{0} 3^{2} - \binom{3}{1} 2^{2} + \binom{3}{2} 1^{2} - \binom{3}{3} 0^{2} = 9 - 12 + 3 - 0 = 0

である。要素の個数が22の集合から要素の個数が33の集合への全射は存在しないので、これも一致する。

3 与えられた数と互いに素である数の個数

次の応用では、条件を「素数ppで割り切れる」という形にとります。共通部分の要素の個数が、素数の積によって決まることが要点です。

定義 3.1 (オイラーの関数). 正の整数nnに対し、11以上nn以下の整数mmであってnnと互いに素であるもの、すなわちmmとnnの最大公約数が11であるものの個数をφ(n)\varphi(n)と書き、φ\varphiをオイラーの関数という。

証明では、初等整数論の次の事実を認めて用います。相異なる素数p1,…,pjp_1, \dots, p_jについて、整数mmがp1,…,pjp_1, \dots, p_jのすべてで割り切れることと、積p1⋯pjp_1 \cdots p_jで割り切れることは同値です。この事実は「初等整数論」が扱います。また、ddがnnの約数であるとき、11以上nn以下でddの倍数である整数はd,2d,…,(n/d)dd, 2d, \dots, (n/d)dのn/dn/d個です。

命題 3.2 (互いに素な数の個数). 正の整数n≥2n \ge 2の相異なる素因数の全体をp1,…,prp_1, \dots, p_rとすると

φ(n)=∑S⊆[r](−1)∣S∣n∏i∈Spi=n∏i=1r(1−1pi)\varphi(n) = \sum_{S \subseteq [r]} (-1)^{|S|} \frac{n}{\prod_{i \in S} p_i} = n \prod_{i=1}^{r} \left( 1 - \frac{1}{p_i} \right)

が成り立つ。ここでS=∅S = \varnothingのときの積は11と読む。

証明.X={1,2,…,n}X = \{1, 2, \dots, n\}とし、i∈[r]i \in [r]についてAi={ m∈X:pi∣m }A_i = \{\, m \in X : p_i \mid m \,\}とおきます。整数mmがnnと互いに素でないことは、mmとnnの共通の素因数が存在すること、すなわちnnの素因数pip_iのいずれかでmmが割り切れることと同値です。よってnnと互いに素なXXの要素の全体はX∖⋃i=1rAiX \setminus \bigcup_{i=1}^{r} A_iであり、φ(n)\varphi(n)はその要素の個数です。

∅≠S⊆[r]\varnothing \ne S \subseteq [r]についてdS=∏i∈Spid_S = \prod_{i \in S} p_iとおきます。認めて用いる事実により、m∈⋂i∈SAim \in \bigcap_{i \in S} A_iであることとdS∣md_S \mid mであることは同値です。p1,…,prp_1, \dots, p_rはnnの相異なる素因数なのでdSd_Sはnnの約数であり、11以上nn以下でdSd_Sの倍数であるものはn/dSn / d_S個です。したがって∣⋂i∈SAi∣=n/dS\bigl| \bigcap_{i \in S} A_i \bigr| = n / d_Sです。系 1.3を適用すると、第一の等式

φ(n)=∑S⊆[r](−1)∣S∣n∏i∈Spi\varphi(n) = \sum_{S \subseteq [r]} (-1)^{|S|} \frac{n}{\prod_{i \in S} p_i}

が得られます(S=∅S = \varnothingの項は∣X∣=n|X| = nです)。

第二の等式を示します。積n∏i=1r(1−1/pi)n \prod_{i=1}^{r} (1 - 1/p_i)を分配律で展開すると、各因子から11または−1/pi-1/p_iのどちらを選ぶかによって項が定まります。−1/pi-1/p_iを選ぶ添字の全体をSSとすると、その項はn⋅(−1)∣S∣/∏i∈Spin \cdot (-1)^{|S|} / \prod_{i \in S} p_iです。選び方SSは[r][r]の部分集合の全体を過不足なく動くので、展開した和は第一の等式の右辺に一致します。▨

例 3.3 (オイラーの関数の検算).n=12=22⋅3n = 12 = 2^{2} \cdot 3の相異なる素因数は2,32, 3である。第一の等式は

φ(12)=12−122−123+126=12−6−4+2=4\varphi(12) = 12 - \frac{12}{2} - \frac{12}{3} + \frac{12}{6} = 12 - 6 - 4 + 2 = 4

を与える。第二の等式は12⋅12⋅23=412 \cdot \tfrac12 \cdot \tfrac23 = 4を与える。実際、1212以下で1212と互いに素な整数は1,5,7,111, 5, 7, 11の44個である。

n=60=22⋅3⋅5n = 60 = 2^{2} \cdot 3 \cdot 5の相異なる素因数は2,3,52, 3, 5である。第一の等式は

φ(60)=60−(30+20+12)+(10+6+4)−2=60−62+20−2=16\varphi(60) = 60 - (30 + 20 + 12) + (10 + 6 + 4) - 2 = 60 - 62 + 20 - 2 = 16

を与える。第二の等式は60⋅12⋅23⋅45=1660 \cdot \tfrac12 \cdot \tfrac23 \cdot \tfrac45 = 16を与えて一致する。6060以下で6060と互いに素な整数は1,7,11,13,17,19,23,29,31,37,41,43,47,49,53,591, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 49, 53, 59の1616個であり、この数え上げとも一致する。

4 鳩の巣原理の一般形

鳩の巣原理は、対象の個数と分類の枠の個数を比べて、同じ枠に入る対象があることを結論します。この論法は、比較する量を個数から実数の平均へ置き換えることで一般化されます。

定理 4.1 (平均以上の値をとる対象の存在).n≥1n \ge 1とし、a1,…,ana_1, \dots, a_nを実数、aˉ=1n∑i=1nai\bar{a} = \dfrac{1}{n} \sum_{i=1}^{n} a_iをその平均とする。このときai≥aˉa_i \ge \bar{a}を満たす添字iiが存在し、aj≤aˉa_j \le \bar{a}を満たす添字jjも存在する。

証明. すべてのiiについてai<aˉa_i < \bar{a}であると仮定します。n≥1n \ge 1なので、両辺をi=1i = 1からnnまで加えると

∑i=1nai<naˉ=∑i=1nai\sum_{i=1}^{n} a_i < n \bar{a} = \sum_{i=1}^{n} a_i

となり、同じ実数がそれ自身より真に小さいことになって矛盾します。したがってai≥aˉa_i \ge \bar{a}を満たすiiが存在します。後半は、この結果を実数−a1,…,−an-a_1, \dots, -a_nへ適用し、その平均が−aˉ-\bar{a}であることを用いれば得られます。▨

対象を箱へ入れる状況へ適用すると、次の形になります。ここでは、対象を入れる箱がすでに与えられている場合を扱います。

系 4.2 (鳩の巣原理の箱による形).NN個の対象をnn個(n≥1n \ge 1)の箱へ入れる。どの対象もちょうど一つの箱へ入れるとすると、⌈N/n⌉\lceil N/n \rceil個以上の対象が入っている箱が存在し、⌊N/n⌋\lfloor N/n \rfloor個以下の対象しか入っていない箱も存在する。

証明.ii番目の箱に入っている対象の個数をaia_iとします。どの対象もちょうど一つの箱へ入るので、対象の全体は各箱の中身へ互いに素に分割されており、和の法則(§D2.2 定理 2.1)により∑i=1nai=N\sum_{i=1}^{n} a_i = Nです。よって平均はaˉ=N/n\bar{a} = N/nです。定理 4.1によりai≥N/na_i \ge N/nを満たすiiが存在します。aia_iは整数なので、N/nN/n以上の整数のうち最小のもの、すなわち⌈N/n⌉\lceil N/n \rceil以上です。後半も同様に、aj≤N/na_j \le N/nを満たすjjに対してaj≤⌊N/n⌋a_j \le \lfloor N/n \rfloorが従います。▨

系 4.3 (鳩の巣原理の基本形).n≥1n \ge 1とする。n+1n+1個の対象をnn個の箱へ入れると、22個以上の対象が入っている箱が存在する。

証明.系 4.2をN=n+1N = n+1に適用すると、⌈(n+1)/n⌉\lceil (n+1)/n \rceil個以上の対象が入っている箱が存在します。n≥1n \ge 1より1<(n+1)/n≤21 < (n+1)/n \le 2なので⌈(n+1)/n⌉=2\lceil (n+1)/n \rceil = 2です。▨

平均の形の利点は、箱の個数と対象の個数を比べる代わりに、対象ごとに定まる量の平均を評価することで存在を示すことができる点にあります。次はその例です。

例 4.4 (平均以上の次数をもつ頂点). 頂点の個数がn≥1n \ge 1、辺の個数がmmである有限グラフGGには、次数が2m/n2m/n以上の頂点と、次数が2m/n2m/n以下の頂点がそれぞれ存在する。

実際、握手補題(§D2.7 定理 1.2)により次数の総和は∑vdeg⁡(v)=2m\sum_{v} \deg(v) = 2mなので、次数の平均は2m/n2m/nである。定理 4.1をnn個の実数deg⁡(v)\deg(v)へ適用すれば主張が得られる。

具体例として、頂点の個数が55、辺の個数が77のグラフを考える。次数の平均は14/5=2.814/5 = 2.8なので、次数が33以上の頂点が存在する(次数は整数なので2.82.8以上は33以上に等しい)。この結論は、どの頂点の次数が33以上であるかを述べていない。

注意 4.5 (結論されるのは存在だけである).定理 4.1と系 4.2の証明は、条件を満たす対象が存在しないと仮定して矛盾を導く形をとる。この形の証明は、条件を満たす対象を一つも指し示さない。例 4.4でいえば、次数が33以上の頂点が存在することは分かるが、どの頂点がそうであるかは、この議論だけからは分からない。

同じことが系 4.2にも当てはまる。22個以上の対象が入っている箱があることと、どの箱がそうであるかを求めることとは、別の問題である。後者を求めるには、実際に箱を調べる手続きが必要になる。

平均を確率変数の期待値へ置き換えると、同じ論法をより広い状況で用いることができる。本単元はこの拡張を扱わない。有限確率空間の確率変数について、期待値以上の値をとる結果と期待値以下の値をとる結果がいずれも存在することは、「離散数学 II」の「確率的手法」が示す(§E13.11 命題 5.1)。

参考文献

  1. Kenneth H. Rosen, Discrete Mathematics and Its Applications, 8th ed., McGraw Hill, New York, 2019.
  2. Ronald L. Graham, Donald E. Knuth, and Oren Patashnik, Concrete Mathematics, 2nd ed., Addison-Wesley, Reading, Massachusetts, 1994.
  3. J. H. van Lint and R. M. Wilson, A Course in Combinatorics, 2nd ed., Cambridge University Press, 2001.

前提記事