鴿巢原理，又名狄利克雷抽屜原理、鴿籠原理。 其中一種簡單的表述法為： 若有 n 個籠子和 n1 隻鴿子，所有的鴿子都被關在鴿籠裡，那麼至少有一個籠子有至少 2 隻鴿子。 另一種為： 若有 n 個籠子和 kn1 隻鴿子，所有的鴿子都被關在鴿籠裡，那麼至少有一個籠子有至少 k1 隻鴿子。 集合論的表述如下： 若 A 是 n1 元集，B 是 n 元集，則不存在從 A 到 B 的單射。 拉姆齊定理是此原理的推廣。 例子 雖然鴿巢原理看起來很容易理解，但有時使用鴿巢原理會得到一些有趣的結論： 比如：北京至少有兩個人頭髮數一樣多。 證明：常人的頭髮數目在 15 萬左右，可以假定沒有人有超過 100 萬根頭髮，但北京人口大於 100 萬。如果把每個鴿巢定義為「頭髮的數量」，便共有 100 萬個鴿巢。打一個比方，一根頭髮的人就會被編排在一根頭髮屬於的巢、兩根就在兩根頭髮屬於的巢，如此類推。鴿子則對應於人，那就變成了有大於 100 萬隻鴿子要進到 100 萬個巢中（另一種說法是把多於 100 萬個人編排到他們身上頭髮所屬的鴿巢，比如有一個人有三根頭髮，他便會進了屬於有三根頭髮的人的鴿巢）。因為北京人口多於 100 萬，如果受訪的前 100 萬人頭髮數目剛好不同，第 100 萬零一個的北京市民就必定會進了一個已經有一人在內的鴿巢。因此，我們便可以得到「北京至少有兩個人頭髮數一樣多」的結論。 另一個例子： 盒子裡有 10 隻黑襪子、12 隻藍襪子，你需要拿一對同色的出來，最多需要拿出幾隻？假設總共 只 能拿一次，只要 3 隻就無法迴避會拿到兩隻相同顏色的襪子，因為顏色只有兩種（鴿巢只有兩個），而有三隻襪子（三隻鴿子），從而得到「拿 3 隻襪子出來，就能保證有一雙同色」的結論。 另一個例子： 某男性先後有過 4 位妻子，合共生有 2 子 3 女，則至少有 2 位子女有同一位母親，且至少 1 位妻子沒有女兒，至少 2 位妻子沒有兒子。 至少有 2 位子女有同一位母親 若非如此，即任何 2 位子女都沒有相同的母親，則該男性至少要有 5 位妻子，矛盾。 至少 1 位妻子沒有女兒 若非如此，即每位妻子都有女兒，則該男性至少要有 4 位女兒，矛盾。 至少 2 位妻子沒有兒子 若非如此，即最多 1 位妻子沒有兒子，則該男性至少要有 3 位兒子，矛盾。 更不直觀一點的例子： 有 n 個人（至少 2 人）互相握手（隨意找人握），必有兩人握過手的人數相同。 這裡，鴿巢對應於握過手人數，鴿子對應於人，每個人都可以與 0n1 人握過手（但 0 和 n1 不能同時存在，因為如果一個人不和任何人握手，那就不會存在一個和所有其他人都握過手的人），所以鴿巢是 n1 個。但有 n 個人（n 隻鴿子），因此証明瞭命題正確。 鴿巢原理經常在計算機領域得到真正的應用。比如：雜湊表的重複問題（衝突）是不可避免的，因為 Keys 的數目總是比 Indices 的數目多，不管是多麼高明的演算法都不可能解決這個問題。這個原理，還證明任何無失真壓縮演算法，在把一些輸入變小的同時，作為代價一定有其他的輸入增大，否則對於長度為 L 的輸入集合，該壓縮演算法總能將其對映到一個更小的長度小於 L 的輸出集合，而這與鴿巢理論相悖。 推廣 一種表達是這樣的：如果要把 n 個物件分配到 m 個容器中，必有至少一個容器容納至少 leftlceilfrac nmrightrceil 個物件。 數學證明 反證法 設把 n1 個元素分為 n 個集合 A_1A_2cdotsA_n，記 a_i A_ii 12cdotsn 表示這 n 個集合裡相應的元素個數。 假設 forall a_i 2 i 12cdotsn 因為 a_i in mathbb N 所以 a_i le 1 所以 a_1a_2cdotsa_n le 11cdots1 n n1 這與題設矛盾，因此結論得證。 數學歸納法 證明：若存在一個從集合 1leq xleq nxinmathbb N 到集合 1leq xleq pxinmathbb N 的單射 f，那麼 nleq p。 若 n1，易得原式成立。 若 n1，歸納假設存在 p，有從集合 1leq xleq n1xinmathbb N 到集合 1leq xleq pxinmathbb N 的單射，n1leq p。 若 f1leq xleq nxinmathbb N rightarrow 1leq xleq pxinmathbb N 如果 p 在對映 f 下沒有原像或 f np 那麼 f 是一個從 1leq xleq nxinmathbb N 到 1leq xleq pxinmathbb N 的單射，所以 n1leq p1，即 nleq p。 如果 p 在對映 f 下有原像，那麼我們記 p 在對映 f 下的原像為 j 且 n 在對映 f 得到的像為 k 可以得到對映 1leq xleq n1xinmathbb N rightarrow 1leq xleq p1xinmathbb N i rightarrow begin cases f i i neq j k i j end cases 是一個單射所以 n1leq p1，即 nleq p。 機率方法 將 m 個元素隨機放入 n 個集合 A_k 中 m n。規定 leftlceil frac mn rightrceil frac mn 如果 n 整除 m。隨機選擇一個集合，它的大小的期望值是： sum_k 1nA_kfrac 1n frac A_1A_2cdotsA_nn frac mn 由於 A_k 只能是整數，所以必有一個 m，使得 A_m ge leftlceil frac mn rightrceil 更強的形式 設 皆是正整數，現有 q_1 q_2 cdots q_n n 1 個物件要分配在個箱子中，那麼以下敘述至少一者成立： 第 1 個箱子包含至少個物件； 第 2 個箱子包含至少個物件； 第個箱子包含至少個物件。 這個原理一樣可以使用反證法證明，即假設上述所有敘述為假並得出矛盾，方法與前述簡單情況類似。 無窮集中的情況 藉由康託的無窮基數可將鴿巢原理推廣到無窮集中：如果集合 A 的勢大於集合 B 的勢，那麼不存在由 A 到 B 的單射。 參見 其他組合原理，如： 容斥原理 乘法原理 參考資料 參考文獻 Grimaldi Ralph P Discrete and Combinatorial Mathematics An Applied Introduction 4th edn 1998 ISBN 0201199122 pp 244248 Jeff Miller Peter Flor Gunnar Berg and Julio González Cabillón Pigeonhole principle In Jeff Miller ed Earliest Known Uses of Some of the Words of Mathematics Electronic document retrieved 11 November 2006 抽屜原理 外部連結 鴿籠原理 ；謝聰智對鴿巢原理的介紹。 The strange case of The Pigeonhole Principle Edsger Dijkstra investigates interpretations and reformulations of the principle The Pigeon Hole Principle Elementary examples of the principle in use by Larry Cusick Pigeonhole Principle from Interactive Mathematics Miscellany and Puzzles basic Pigeonhole Principle analysis and examples by CuttheKnot The Puzzlers Pigeonhole CuttheKnot on the importance of the principle in the field of puzzle solving and analysis Category 組合數學 Category 離散數學定理 Category 數學原理 Category 拉姆齊理論