evan's notes
cal 3discreteodeenv systems
English

本页目录

  • Pigeonhole principle
  • Proof by contrapositive
  • 正六边形中的七个点
  • Generalized pigeonhole principle
  • 抽多少张牌能保证三张同 suit?
  • Proof by contradiction
  • 证明 generalized pigeonhole principle
  • 例:根号二是 irrational
  • Proof by cases
  • 例:整数不大于它的平方

Discrete Structures:离散结构

§8 Pigeonhole principle、contradiction 与 cases

Evan Luo · 2026年10月1日

Discrete Structures:离散结构

§8 Pigeonhole principle、contradiction 与 cases

Evan Luo2026年10月1日

12 分钟

有些证明能保证某个对象存在,却不告诉我们具体是哪一个。Pigeonhole principle 通过计数做到这一点:如果对象太多,不可能每个盒子只放一个,就一定有盒子放了不止一个对象。它的证明也能帮助我们区分 contraposition 与 contradiction。

Pigeonhole principle

把五个对象放进四个盒子,每个对象恰好分配到一个盒子。五个对象不可能全部分开,因此至少有一个盒子包含至少两个对象。这不表示每个盒子都有两个对象,也不表示那个共用的盒子里恰好有两个。

Five objects assigned to four boxesFour boxes form a two by two grid. The upper-left box contains two objects, and each other box contains one. This is one possible assignment, not the only arrangement.
One possible assignment. At least one box must be shared, but it need not be this box.

Pigeonhole principle,通常简称 PHP,把这个结论推广到任意正整数 nnn 和 mmm:

把 nnn 个对象分配到 mmm 个盒子中,如果 n>mn>mn>m,那么至少有一个盒子包含至少两个对象。

这些对象称为 “pigeons”,盒子或类别称为 “holes”。每个对象必须恰好分配到一个 hole。应用时,难点往往是怎样选择 holes,使两个对象落入同一个 hole 就能得到我们要的结论。

Proof by contrapositive

不从“对象比 holes 多”出发,而是假设每个 hole 都少于两个对象。我们要证明,对象总数至多等于 holes 的数量。

设 xix_ixi​ 是第 iii 个 hole 中的对象数,其中 i=1,2,…,mi=1,2,\ldots,mi=1,2,…,m。每个 xix_ixi​ 都是非负整数,因此“少于两个”就意味着 xi≤1x_i\le1xi​≤1。每个对象恰好计数一次,得到

n=x1+x2+⋯+xm≤1+1+⋯+1⏟m terms=m.n=x_1+x_2+\cdots+x_m \le\underbrace{1+1+\cdots+1}_{m\text{ terms}} =m. n=x1​+x2​+⋯+xm​≤m terms1+1+⋯+1​​=m.

我们已经证明:如果每个 hole 至多有一个对象,那么 n≤mn\le mn≤m。这正是 pigeonhole principle 的 contrapositive,所以原 statement 成立。

正六边形中的七个点

在边长为 111 的正六边形内任意放置七个点。证明其中至少有两个点之间的距离不超过 111。

七个点就是 pigeons。为了选出有用的 holes,将六边形的中心与各顶点相连,把它分成六个 equilateral triangles。每个三角形的边长也为 111,同一个三角形内任意两点的距离都不超过 111。

Seven points in six unit equilateral trianglesA regular hexagon of side length one is divided from its centre into six equilateral triangles. One possible placement of seven points has two in the shaded triangle. The segment joining those two points has length at most one.
111
One possible placement. The six triangles are the holes; their side length limits the distance between any two points in the same triangle.

把每个点分配给一个包含它的三角形。如果点位于共用边或中心,只能分配给其中一个包含它的三角形;按任意固定规则选一个即可。这样就不会重复计数。

共有七个点,却只有六个三角形。由 PHP,至少一个三角形分配到了至少两个点。这两点的距离不超过 111,结论成立。

这是对每一种放置方式的保证,不是概率 statement。距离上界允许取等号,因此也包含点位于六边形边界上的情况。

Generalized pigeonhole principle

如果对象数比 holes 的数量多得更多,就能保证某个 hole 不止有两个对象。至少有一个 hole 的对象数不小于平均数;由于对象数是整数,需要把平均数向上取整。

对于实数 ttt,ceiling ⌈t⌉\lceil t\rceil⌈t⌉ 是大于或等于 ttt 的最小整数。例如,

⌈76⌉=2.\left\lceil\frac76\right\rceil=2. ⌈67​⌉=2.

Generalized pigeonhole principle 说:把 nnn 个对象分配到 mmm 个 holes 中,其中 nnn 和 mmm 是正整数,那么至少有一个 hole 包含至少

⌈nm⌉\left\lceil\frac nm\right\rceil ⌈mn​⌉

个对象。这是对象数的 lower bound,不是说恰好有这么多。当 n>mn>mn>m 时,n/m>1n/m>1n/m>1,所以 ceiling 至少为 222,普通 PHP 就是这个结论的特例。

抽多少张牌能保证三张同 suit?

从一副不含 jokers 的标准扑克牌中抽牌。至少抽多少张,才能保证其中至少三张属于同一个 suit?

牌是对象,四种 suits 是 holes。如果抽 nnn 张牌,至少一种 suit 出现不少于 ⌈n/4⌉\lceil n/4\rceil⌈n/4⌉ 次。我们需要

⌈n4⌉≥3.\left\lceil\frac n4\right\rceil\ge3. ⌈4n​⌉≥3.

只要 ceiling 内部的数超过 222,ceiling 就至少为 333;内部的数本身不需要达到 333。因此

⌈n4⌉≥3⟺n4>2⟺n>8.\left\lceil\frac n4\right\rceil\ge3 \quad\Longleftrightarrow\quad \frac n4>2 \quad\Longleftrightarrow\quad n>8. ⌈4n​⌉≥3⟺4n​>2⟺n>8.

由于 nnn 是整数,抽九张就足够。要得到保证,九张也是必要的:八张可能恰好每种 suit 各两张,没有任何 suit 出现三次。所以最小值是 999。

Proof by contradiction

用 contradiction 证明 statement PPP 时,先假设它的 negation ¬P\neg P¬P 成立,再推出不可能的结果。于是这个假设必须为假,PPP 为真。在 classical logic 中,

P≡(¬P⇒False).P\equiv(\neg P\Rightarrow\mathrm{False}). P≡(¬P⇒False).

这个不可能的结果不一定要直接反驳某个已经写出的 hypothesis。例如,推出 n<nn<nn<n 就足够了,因为没有哪个数严格小于它自己。

证明 generalized pigeonhole principle

结论要求至少有一个 hole 达到指定数量。否定它,就得到每个 hole 的对象数都低于这个数量,因此可以把各个上界相加,检查是否还能容纳全部对象。

令 xix_ixi​ 为第 iii 个 hole 中的对象数,其中 i=1,2,…,mi=1,2,\ldots,mi=1,2,…,m。每个对象恰好分配到一个 hole,所以

n=x1+x2+⋯+xm.n=x_1+x_2+\cdots+x_m. n=x1​+x2​+⋯+xm​.

目标是证明某个 hole 至少有 ⌈n/m⌉\lceil n/m\rceil⌈n/m⌉ 个对象。为了用 contradiction 证明,假设每个 hole 的对象数都低于这个 bound:

xi<⌈nm⌉for every i=1,2,…,m.x_i<\left\lceil\frac nm\right\rceil \qquad\text{for every }i=1,2,\ldots,m. xi​<⌈mn​⌉for every i=1,2,…,m.

要将这些数量与平均数 n/mn/mn/m 比较,先用 ceiling 的定义性质:

⌈t⌉−1<t≤⌈t⌉.\lceil t\rceil-1<t\le\lceil t\rceil. ⌈t⌉−1<t≤⌈t⌉.

如果 ttt 是整数,右侧 inequality 取等号,但左侧仍然是 strict inequality。

The ceiling bound on a number lineFor seven objects and six holes, the average is seven sixths, strictly above one and below its ceiling of two. The integer just below the ceiling is always strictly below the average, including when the average is itself an integer.
⌈nm⌉−1\left\lceil\frac nm\right\rceil-1⌈mn​⌉−1
nm\frac nmmn​
⌈nm⌉\left\lceil\frac nm\right\rceil⌈mn​⌉
Shown for seven objects in six holes. If the average is an integer, it coincides with the right-hand tick; the lower bound remains strict.

每个 xix_ixi​ 都是整数。因此,它小于整数 ⌈n/m⌉\lceil n/m\rceil⌈n/m⌉ 时,至少比它小一个整数单位:

xi≤⌈nm⌉−1<nm.x_i\le\left\lceil\frac nm\right\rceil-1<\frac nm. xi​≤⌈mn​⌉−1<mn​.

将全部 mmm 个 holes 对应的 strict inequalities 相加,得到

n=x1+x2+⋯+xm<nm+nm+⋯+nm⏟m terms=mnm=n.n=x_1+x_2+\cdots+x_m <\underbrace{\frac nm+\frac nm+\cdots+\frac nm}_{m\text{ terms}} =m\frac nm=n. n=x1​+x2​+⋯+xm​<m termsmn​+mn​+⋯+mn​​​=mmn​=n.

这就得到了 n<nn<nn<n,产生 contradiction。因此,“每个 hole 的对象数都低于这个 bound”的假设为假,于是

∃i∈{1,2,…,m}xi≥⌈nm⌉.\exists i\in\{1,2,\ldots,m\}\quad x_i\ge\left\lceil\frac nm\right\rceil. ∃i∈{1,2,…,m}xi​≥⌈mn​⌉.

注意 assumption 中的“每个”变成了 conclusion 中的“某个”。否定“每个 hole 都低于 bound”,并不意味着每个 hole 都达到了 bound。

例:根号二是 irrational

用 Z\mathbb ZZ 表示整数集。Rational number 可以写成 a/ba/ba/b,其中 aaa、bbb 都是整数,且 b≠0b\ne0b=0。Rational numbers 组成的 set 记作 Q\mathbb QQ。Irrational number 是不属于 rational numbers 的实数。我们要证明

2∉Q.\sqrt2\notin\mathbb Q. 2​∈/Q.

每个 rational number 都能写成分母为正的 lowest terms 形式:取 b>0b>0b>0,且 gcd⁡(a,b)=1\gcd(a,b)=1gcd(a,b)=1。这里,gcd⁡(a,b)\gcd(a,b)gcd(a,b) 表示 aaa 和 bbb 的 greatest common divisor;这个条件说明它们没有除 111 以外的正公因子。

假设 2\sqrt22​ 是 rational,以求推出 contradiction。选择这样的 reduced representation:

2=ab,a,b∈Z,b>0,gcd⁡(a,b)=1.\sqrt2=\frac ab, \qquad a,b\in\mathbb Z,\quad b>0,\quad\gcd(a,b)=1. 2​=ba​,a,b∈Z,b>0,gcd(a,b)=1.

两边平方,再乘以 b2b^2b2,得到

2=a2b2⟹a2=2b2.2=\frac{a^2}{b^2} \quad\Longrightarrow\quad a^2=2b^2. 2=b2a2​⟹a2=2b2.

因此 a2a^2a2 是 even。整数平方的 parity 结论 说明,一个整数是 even,当且仅当它的平方是 even。所以 aaa 是 even,存在整数 kkk,使 a=2ka=2ka=2k。

把它代回 a2=2b2a^2=2b^2a2=2b2:

(2k)2=2b2⟹4k2=2b2⟹b2=2k2.(2k)^2=2b^2 \quad\Longrightarrow\quad 4k^2=2b^2 \quad\Longrightarrow\quad b^2=2k^2. (2k)2=2b2⟹4k2=2b2⟹b2=2k2.

现在 b2b^2b2 是 even,由同一个 parity 结论,bbb 也是 even。于是可以写成 b=2ℓb=2\ellb=2ℓ,其中 ℓ\ellℓ 是整数。

这样,aaa 和 bbb 都有公因子 222,与 gcd⁡(a,b)=1\gcd(a,b)=1gcd(a,b)=1 矛盾。原假设为假,因此 2\sqrt22​ 是 irrational。

一开始选择 lowest terms 对这个证明不可缺少。发现任意一个分式的分子、分母有公因子,不会产生 contradiction;只有在已经假设分式约分到最低项之后,发现公因子才构成 contradiction。

Proof by cases

不同输入有时需要不同论证。Proof by cases 把所有可能输入分成若干种情况,再在每一种情况下证明所需 conclusion。

对于 kkk 种情况,令 A1,…,AkA_1,\ldots,A_kA1​,…,Ak​ 表示各情况的条件,CCC 表示 conclusion。相应的 logical equivalence 是

((A1∨⋯∨Ak)⇒C)≡((A1⇒C)∧⋯∧(Ak⇒C)).\bigl((A_1\lor\cdots\lor A_k)\Rightarrow C\bigr) \equiv \bigl((A_1\Rightarrow C)\land\cdots\land(A_k\Rightarrow C)\bigr). ((A1​∨⋯∨Ak​)⇒C)≡((A1​⇒C)∧⋯∧(Ak​⇒C)).

要得到 CCC,还必须知道至少一种情况成立,即 A1∨⋯∨AkA_1\lor\cdots\lor A_kA1​∨⋯∨Ak​。这些 cases 必须 exhaustive,也就是覆盖全部可能性。Cases 可以重叠,不要求 mutually exclusive。即使题目没有提示如何分类,选择有用的 cases 也是证明的一部分。

例:整数不大于它的平方

我们要证明

n≤n2for every n∈Z.n\le n^2\qquad\text{for every }n\in\mathbb Z. n≤n2for every n∈Z.

任取整数 nnn,根据它的正负分情况。

Case 1:n≤0n\le0n≤0。 平方非负,因此

n≤0≤n2.n\le0\le n^2. n≤0≤n2.

Case 2:n>0n>0n>0。 由于 nnn 是整数,所以 n≥1n\ge1n≥1。将 1≤n1\le n1≤n 两边乘以正数 nnn,不等号方向不变:

n⋅1≤n⋅n,so n≤n2.n\cdot1\le n\cdot n, \qquad\text{so }n\le n^2. n⋅1≤n⋅n,so n≤n2.

每个整数都满足 n≤0n\le0n≤0 或 n>0n>0n>0,而两种情况都得到了所需结论,因此 claim 成立。

整数假设恰好用在从 n>0n>0n>0 推出 n≥1n\ge1n≥1 的那一步。对于任意正实数,这一步并不成立。

来源: https://notes.ohevan.com/zh/notes/discrete-structures/08-pigeonhole-and-contradiction

© 2026 Evan Luo. 保留所有权利。

返回 Discrete Structures:离散结构

0 次阅读

·最后编辑 今天
  • 邮件订阅

  • 关于我

  • 赞助

© 2026 Evan Luo. 保留所有权利。