鸽巢原理

Written by: algebnaly

Date: 2025-04-28T11:24:22.000Z

导言

基本上,有两个版本的鸽巢原理:

  1. 如果n个自然数之和大于n,则这些自然数中有一个自然数大于1。
  2. A,BA,B都是有限集,且有A=B|A|=|B|,即AABB等势, 则函数f:ABf:A \Rightarrow B是单射当且仅当ff是满射。

我想证明第二个版本。

证明命题

准备工具

在证明鸽巢原理之前, 我们需要两个引理。

引理1 有限集AA的子集BB是有限集, 且有BA|B| \le |A|, 若BBAA的真子集, 则B<A|B| < |A|

证明: 我们对AA的势使用数学归纳法,令n:=An:=|A|。 首先是基础情形, n=0n=0AA是空集, 则唯一的子集也是空集, 命题成立。

现在假定n=n0n=n_0时命题也成立, 需要证明n=n0+1n=n_0+1时命题也成立。

如果B=AB=A, 则A=B|A|=|B|命题成立,现在考虑B是A的真子集的情况。既然BBAA的真子集,则存在a0A,a0Ba_0 \in A, a_0 \notin B, 令A1:=A\{a0}A_1 := A\backslash\{a_0\}, 于是A1A_1的势为n0n_0, 且有BBA1A_1的子集,根据归纳假设BA1<A|B| \le |A_1| < |A|命题成立。

引理2 A,BA,B是有限集,如果A<B|A| < |B|, 则不存在从AABB的满射。

证明: 我们对AA的势使用强归纳法,令n:=An:=|A|

首先是基础情形, n=0n=0时,AA为空集,A<B|A| < |B|, 则BB不为空集,则唯一的从AABB的函数是空函数,该空函数不是满射, 于是基础情形成立。

接着假定n=n0n=n_0时命题也成立。现在需要证明n=n0+1n=n_0+1时命题也成立。

不妨假定存在从AABB的满射ff,

任取BB中一元素b0b_0, 由于ff是满射, 则f1({b0})f^{-1}(\{b_0\})非空, 不妨令 Ab0:=f1({b0})A_{b_0} := f^{-1}(\{ b_0 \})Ab0A_{b_0}AA的子集,令A1:=A\Ab0A_1:=A\backslash A_{b_0}, B1:=B\{b0}B_1 := B\backslash\{ b_0 \},将f限制在A1A_1上得到函数f1f_1, f1f_1仍然是从A1A_1B1B_1的满射。由引理1得到A1A_1是有限集且其势小于A|A|。于是A1A1<B1=B1|A_1| \le |A| - 1 < |B| -1 = |B_1|于是A1<B1|A_1| < |B_1|, 由于A1A_1的势小于等于n0n_0由归纳假设可知f1f_1不是满射, 这与假设相矛盾, 于是命题得证。

开始证明

现在我们可以证明鸽巢原理了。

单射 \Rightarrow 满射

我们先证明单射蕴含着满射。

我们对AA的势使用数学归纳法,用nn表示AA的势。

首先证明基础情形。n=0n=0时, AABB的势为零则A,BA,B都是空集, 则从AABB的唯一的函数就是空函数,空函数既是单射也是满射,基础情形成立。

接着假定n=n0n=n_0时,命题也成立,现在需要证明n=n0+1n=n_0+1时命题也成立。

AA中一元素a0a_0,那么有f(a0)Bf(a_0) \in B, 不妨令f(a0)=b0f(a_0)=b_0。 既然f是单射, 那么如果aa0a \neq a_0,则f(a)b0f(a) \neq b_0,于是我们有f(A\{a0})B\{b0}f(A\backslash\{a_0\}) \subset B\backslash\{b_0\}

A1:=A\{a0}A_1 := A\backslash \{a_0\},B1:=B\{b0}B_1 := B\backslash \{b_0\}。 我们定义函数f1:A1B1,f1:af(a)f_1: A_1 \Rightarrow B_1, f_1: a \mapsto f(a), 从上文可知, 若aA1a \in A_1, 则f(a)B1f(a) \in B_1,于是f1f_1是良定义的。

由于ff是单射, 则f1f_1也是单射。且A1=B1=n0|A_1|=|B_1|=n_0, 于是由归纳假设, f1f_1是满射,接着得到ff也是满射。

满射 \Rightarrow 单射

现在证明满射蕴含着单射。

我们使用反证法,不妨假定存在一个函数f:ABf: A \Rightarrow B它是满射但不是单射。 既然ff不是单射, 那么AA的势大于1,否则ff一定是单射。 既然ff不是单射, 那么BB中存在一元素b0b_0使得有多个AA中的元素被映射到b0b_0。 模仿上文中的做法,拿掉BB中的b0b_0AA中的f1({b0})f^{-1}(\{b_0\})f1({b0})f^{-1}(\{b_0\}),得到f1:A1B1f_1: A_1 \Rightarrow B_1 ,既然ff是满射,拿掉b0b_0后仍然是满射, 由引理1,A1,B1A_1, B_1仍然是有限集,且A1<n0=B1|A_1| < n_0 = |B_1|,由引理2,f1f_1不是满射这是一个矛盾。于是命题得证。