鴿巢原理,又名狄利克雷抽屜原理鴿籠原理

Thumb
10隻鴿子放進9個鴿籠,那麼一定有一個鴿籠放進了至少兩隻鴿子。

其中一種簡單的表述法為:

  • 若有n個籠子和n+1隻鴿子,所有的鴿子都被關在鴿籠裏,那麼至少有一個籠子有至少2隻鴿子。

另一種為:

  • 若有n個籠子和kn+1隻鴿子,所有的鴿子都被關在鴿籠裏,那麼至少有一個籠子有至少k+1隻鴿子。

集合論的表述如下:

  • 若A是n+1元集,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人)互相握手(隨意找人握),必有兩人握過手的人數相同。
    • 這裏,鴿巢對應於握過手人數,鴿子對應於人,每個人都可以與[0,n-1]人握過手(但0和n-1不能同時存在,因為如果一個人不和任何人握手,那就不會存在一個和所有其他人都握過手的人),所以鴿巢是n-1個。但有n個人(n隻鴿子),因此証明了命題正確。

鴿巢原理經常在計算機領域得到真正的應用。比如:雜湊表的重複問題(衝突)是不可避免的,因為Keys的數目總是比Indices的數目多,不管是多麼高明的演算法都不可能解決這個問題。這個原理,還證明任何無損壓縮演算法,在把一些輸入變小的同時,作為代價一定有其他的輸入增大,否則對於長度為L的輸入集合,該壓縮演算法總能將其對映到一個更小的長度小於L的輸出集合,而這與鴿巢理論相悖。

推廣

一種表達是這樣的:如果要把n個物件分配到m個容器中,必有至少一個容器容納至少個物件。

數學證明

反證法

設把n+1個元素分為n個集合,記表示這n個集合里相應的元素個數。

假設

因為

所以

所以

這與題設矛盾,因此結論得證。

數學歸納法

證明:若存在一個從集合到集合的單射,那麼

,易得原式成立。

,歸納假設存在,有從集合到集合的單射,。 若 如果在對映下沒有原像或,那麼是一個從 的單射,所以 ,即

如果在對映下有原像,那麼我們記在對映下的原像為在對映得到的像為,可以得到對映: 是一個單射所以,即

概率方法

將m個元素隨機放入n個集合中(m > n)。規定如果n整除m。隨機選擇一個集合,它的大小的期望值是: 由於只能是整數,所以必有一個m,使得

更強的形式

q1, q2, ..., qn 皆是正整數,現有

個物件要分配在n個箱子中,那麼以下敘述至少一者成立:

  • 第1個箱子包含至少q1個物件;
  • 第2個箱子包含至少q2個物件;
  • ......
  • n個箱子包含至少qn個物件。[1]

這個原理一樣可以使用反證法證明,即假設上述所有敘述為假並得出矛盾,方法與前述簡單情況類似。

無窮集中的情況

藉由康托的無窮基數可將鴿巢原理推廣到無窮集中:如果集合A的大於集合B的勢,那麼不存在由A到B的單射

參見

參考資料

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.