鸽巢原理
Written by: algebnaly
Date: 2025-04-28T11:24:22.000Z
导言
基本上,有两个版本的鸽巢原理:
- 如果n个自然数之和大于n,则这些自然数中有一个自然数大于1。
- A,B都是有限集,且有∣A∣=∣B∣,即A与B等势, 则函数f:A⇒B是单射当且仅当f是满射。
我想证明第二个版本。
证明命题
准备工具
在证明鸽巢原理之前, 我们需要两个引理。
引理1 有限集A的子集B是有限集, 且有∣B∣≤∣A∣, 若B是A的真子集, 则∣B∣<∣A∣
证明: 我们对A的势使用数学归纳法,令n:=∣A∣。
首先是基础情形, n=0时A是空集, 则唯一的子集也是空集, 命题成立。
现在假定n=n0时命题也成立, 需要证明n=n0+1时命题也成立。
如果B=A, 则∣A∣=∣B∣命题成立,现在考虑B是A的真子集的情况。既然B是A的真子集,则存在a0∈A,a0∈/B, 令A1:=A\{a0}, 于是A1的势为n0, 且有B是A1的子集,根据归纳假设∣B∣≤∣A1∣<∣A∣命题成立。
引理2 A,B是有限集,如果∣A∣<∣B∣, 则不存在从A到B的满射。
证明: 我们对A的势使用强归纳法,令n:=∣A∣。
首先是基础情形, n=0时,A为空集,∣A∣<∣B∣, 则B不为空集,则唯一的从A到B的函数是空函数,该空函数不是满射, 于是基础情形成立。
接着假定n=n0时命题也成立。现在需要证明n=n0+1时命题也成立。
不妨假定存在从A到B的满射f,
任取B中一元素b0, 由于f是满射, 则f−1({b0})非空, 不妨令
Ab0:=f−1({b0})。Ab0是A的子集,令A1:=A\Ab0,
B1:=B\{b0},将f限制在A1上得到函数f1, f1仍然是从A1到B1的满射。由引理1得到A1是有限集且其势小于∣A∣。于是∣A1∣≤∣A∣−1<∣B∣−1=∣B1∣于是∣A1∣<∣B1∣, 由于A1的势小于等于n0由归纳假设可知f1不是满射, 这与假设相矛盾, 于是命题得证。
开始证明
现在我们可以证明鸽巢原理了。
单射 ⇒ 满射
我们先证明单射蕴含着满射。
我们对A的势使用数学归纳法,用n表示A的势。
首先证明基础情形。n=0时, A与B的势为零则A,B都是空集, 则从A到B的唯一的函数就是空函数,空函数既是单射也是满射,基础情形成立。
接着假定n=n0时,命题也成立,现在需要证明n=n0+1时命题也成立。
取A中一元素a0,那么有f(a0)∈B, 不妨令f(a0)=b0。
既然f是单射, 那么如果a=a0,则f(a)=b0,于是我们有f(A\{a0})⊂B\{b0}。
令A1:=A\{a0},B1:=B\{b0}。
我们定义函数f1:A1⇒B1,f1:a↦f(a), 从上文可知, 若a∈A1, 则f(a)∈B1,于是f1是良定义的。
由于f是单射, 则f1也是单射。且∣A1∣=∣B1∣=n0, 于是由归纳假设, f1是满射,接着得到f也是满射。
满射 ⇒ 单射
现在证明满射蕴含着单射。
我们使用反证法,不妨假定存在一个函数f:A⇒B它是满射但不是单射。
既然f不是单射, 那么A的势大于1,否则f一定是单射。
既然f不是单射, 那么B中存在一元素b0使得有多个A中的元素被映射到b0。
模仿上文中的做法,拿掉B中的b0和A中的f−1({b0})和f−1({b0}),得到f1:A1⇒B1,既然f是满射,拿掉b0后仍然是满射, 由引理1,A1,B1仍然是有限集,且∣A1∣<n0=∣B1∣,由引理2,f1不是满射这是一个矛盾。于是命题得证。