数学において「…が存在する」ことを証明するのは,「…を具体的に構成する」ことよりもしばしば難しい(あるいは易しい)ものです.鳩の巣原理(pigeonhole principle)は,「具体的にどこにあるかは言えないが,必ずどこかにある」という存在証明を与える,驚くほど単純で強力な原理です.
1 鳩の巣原理の基本形
n+1 羽以上の鳩を n 個の巣箱に入れると,少なくとも1つの巣箱には2羽以上の鳩が入ります.
対偶を示します.すべての巣箱に高々1羽しかいなければ,鳩の総数は高々 n 羽です.これは n+1 羽以上いるという仮定に矛盾します. □
2 一般化鳩の巣原理
n 個の物を k 個の箱に入れると,少なくとも1つの箱には ⌈n/k⌉ 個以上の物が入ります.
すべての箱に ⌈n/k⌉−1 個以下しかなければ,物の総数は高々 k(⌈n/k⌉−1)<k⋅(n/k)=n で矛盾します. □
3 具体例 ― 単純だが非自明な応用
367人の集団には,同じ誕生日の人が必ず2人以上います(うるう年考慮で366日 + 1人).これは鳩の巣原理の直接適用です.「誰と誰が同じ誕生日か」は特定できませんが,存在は保証されます.
{1,2,…,2n} から n+1 個の数を選ぶと,選んだ数の中に一方が他方の約数であるペアが必ず存在します.各整数 m を m=2a⋅q(q は奇数)と書くと,奇数部分 q は {1,3,5,…,2n−1} の n 個の値をとります.n+1 個の数を選ぶと,鳩の巣原理より同じ奇数部分 q をもつ2数 2aq と 2bq(a<b)が存在し,2aq∣2bq です.
4 Erdos-Szekeres の定理
鳩の巣原理の驚くべき応用として,単調部分列に関する美しい定理があります.
長さ rs+1 以上の数列には,長さ r+1 以上の単調増加部分列か,長さ s+1 以上の単調減少部分列が必ず存在します.
数列を a1,a2,…,ars+1 とします.各 ai に対して,ai から始まる最長単調増加部分列の長さ ℓi を定めます.もしある i で ℓi≥r+1 なら定理は成立します.そうでなければ ℓi∈{1,2,…,r} です.rs+1 個の値 ℓi が r 種類しかないので,一般化鳩の巣原理より,同じ値をとるものが少なくとも s+1 個あります:ℓi1=ℓi2=⋯=ℓis+1(i1<i2<⋯<is+1).ここで aij≤aij+1 だとすると,aij から始まる最長増加部分列に aij+1 を先頭に追加できて ℓij>ℓij+1 となり ℓij=ℓij+1 に矛盾します.よって ai1>ai2>⋯>ais+1 で,長さ s+1 の単調減少部分列が得られます. □
5 ラムゼー理論への導入
鳩の巣原理を押し進めるとラムゼー理論に到達します.
6人の集団において,どのように「友人」「他人」の関係を定めても,3人の「全員が友人同士」か3人の「全員が他人同士」が必ず存在します.
6人のうち1人を A とします.A と残り5人の関係を「友人」「他人」に分類すると,鳩の巣原理より少なくとも3人は同じ関係です.A と友人であるような3人を B,C,D としましょう.B,C,D の間の関係を考えます:
B,C,D のうちどれか2人が友人であれば,その2人と A で「全員友人」の3人組ができます
B,C,D が全員他人同士であれば,「全員他人」の3人組ができます
どちらの場合も条件を満たします(A が他人3人を持つ場合も対称的に同様). □
6 存在証明 vs 構成的証明
7 まとめ
鳩の巣原理は「n+1 個を n 箱に入れればどこかに2個以上」という単純な原理です
一般化形「⌈n/k⌉ 個以上」も頻繁に使います
Erdos-Szekeres の定理は鳩の巣原理の美しい応用です
ラムゼー理論は鳩の巣原理の究極の拡張で,R(3,3)=6 はその入口です
鳩の巣原理は非構成的な存在証明の典型例です
次の記事では,対称性を使って数え上げを劇的に簡単にする ― バーンサイドの補題とポリアの数え上げ定理を紹介します.