Chapter III-IV: 递归与数学归纳, 鸽笼原理及其应用
1. 递归和数学归纳
“递归” 和 “归纳” 这两个概念在组合数学领域和计算机科学领域都具有极为重要的地位. 在本节中, 我们将通过举例展现具有递归性质的式子是如何自然地在解决组合数学问题的过程中产生的. 同时, 我们将对数学归纳法进行介绍, 并且举出几个例子说明.
定理3.1 (正整数的良序性定理)
任何一个非空的, 元素均为正整数的集合均含有最小的元素.
定理3.2 (数学归纳法)
设 S n S_{n} Sn 为一个和正整数 n n n 相关的数学陈述. 若其为真, 且对任意正整数 k k k, 当 S k S_{k} Sk 为真时 S k + 1 S_{k+1} Sk+1 也为真, 则对于任意正整数 n n n, S n S_{n} Sn 为真.
[例]
求证: 对任意正整数
n
n
n, 满足
n
3
+
(
n
+
1
)
3
+
(
n
+
2
)
3
≡
0
(
m
o
d
9
)
.
n^3 + (n+1)^3 + (n+2)^3 \equiv 0 ~~~~ (mod~9).
n3+(n+1)3+(n+2)3≡0 (mod 9).
[证明]
n
=
1
n = 1
n=1 时, 显然
1
3
+
2
3
+
3
3
=
36
≡
0
(
m
o
d
9
)
.
1^3 + 2^3 +3^3 = 36 \equiv 0 ~~~~ (mod~9).
13+23+33=36≡0 (mod 9).
不妨假设, 对某个大于
1
1
1 的正整数
k
k
k, 假设成立. 即:
k
3
+
(
k
+
1
)
3
+
(
k
+
2
)
3
≡
0
(
m
o
d
9
)
.
k^3 + (k+1)^3 + (k+2)^3 \equiv 0 ~~~~ (mod~9).
k3+(k+1)3+(k+2)3≡0 (mod 9).
当
n
=
k
+
1
n = k+1
n=k+1 时:
(
k
+
1
)
3
+
(
k
+
1
+
1
)
3
+
(
k
+
1
+
2
)
3
=
[
(
k
+
1
)
3
+
(
k
+
2
)
3
+
k
3
]
+
[
(
3
1
)
3
2
⋅
k
+
(
3
2
)
3
⋅
k
2
+
(
3
3
)
3
3
]
≡
0
(
m
o
d
9
)
.
(k+1)^3 + (k+1+1)^3 + (k+1+2)^3 = \\ [(k+1)^3 + (k+2)^3 + k^3] + [\binom 31 3^2\cdot k + \binom 32 3\cdot k^2 + \binom 33 3^3] \\ \equiv 0 ~~~~ (mod ~9).
(k+1)3+(k+1+1)3+(k+1+2)3=[(k+1)3+(k+2)3+k3]+[(13)32⋅k+(23)3⋅k2+(33)33]≡0 (mod 9).
故知: 原假设对一切正整数
n
n
n 均成立.
■
\blacksquare
■
2. 鸽笼原理
下面, 我们对鸽笼原理进行说明和证明, 并给出几个鸽笼原理运用的例子.
我们称一个映射: f : X → Y f: X \rightarrow Y f:X→Y 为一个 单射, 当且仅当:
对任意 x , x ′ ∈ X x, x' \in X x,x′∈X, 若 x ≠ x ′ x \neq x' x=x′, 则 f ( x ) ≠ f ( x ′ ) f(x) \neq f(x') f(x)=f(x′).
注意到, 当 f : X → Y f: X \rightarrow Y f:X→Y 为一个单射时, 显然 ∣ X ∣ ⩽ ∣ Y ∣ |X|\leqslant |Y| ∣X∣⩽∣Y∣.
引理4.1 (鸽笼原理)
若 f : X → Y f: X \rightarrow Y f:X→Y 为一个映射, 且 ∣ X ∣ > ∣ Y ∣ |X| > |Y| ∣X∣>∣Y∣, 则必存在一元素 y ∈ Y y \in Y y∈Y 和互异元素 x , x ′ ∈ X x, x' \in X x,x′∈X, 满足 f ( x ) = f ( x ′ ) = y f(x) = f(x') = y f(x)=f(x′)=y.
上述定理的一个 “幼儿园化” 的解释就是: 若必须将 n n n 只鸽子分配进 n n n 个鸽巢中, 则在某一个巢中必然存在两只鸽子.
引理4.2 (鸽笼原理的一般化表述)
假设有 n n n 个鸽笼, m m m 只鸽子. 则至少有一个鸽笼中, 鸽子的数量不少于 ⌈ m n ⌉ \lceil \frac{m}{n} \rceil ⌈nm⌉.
[证明]
不妨假设 r r r 为所有鸽笼中鸽子数的最大值, r < ⌈ m n ⌉ r < \lceil \frac{m}{n} \rceil r<⌈nm⌉.
由加法原理: 鸽子总数必不超过 n ⋅ r < m n\cdot r < m n⋅r<m, 矛盾. ■ \blacksquare ■
定理4.1 (Erdos定理)
设 m , n m,n m,n 为非负整数. 则任意由不同实数组成的, 长为 m n + 1 mn+1 mn+1 的序列中, 要么存在一个长为 m + 1 m+1 m+1 的递增子序列, 要么可以找到一个长为 n + 1 n+1 n+1 的递减子序列.
[证明]
设 σ ( x 1 , x 2 , ⋯ , x m n + 1 ) \sigma(x_{1}, x_{2}, \cdots, x_{mn+1}) σ(x1,x2,⋯,xmn+1) 为一个由不同实数组成的, 长为 m n + 1 mn+1 mn+1 的序列. 对每个 i = 1 , 2 , ⋯ , m n + 1 i = 1,2,\cdots, mn+1 i=1,2,⋯,mn+1.
设 a i a_{i} ai 为: 以 x i x_{i} xi 为首的, 递增子序列的最大长度; 设 b i b_{i} bi 为: 以 x i x_{i} xi 为末尾的, 递减子序列的最大长度. 若存在某个 i i i, 使得 a i ⩾ m + 1 a_{i} \geqslant m+1 ai⩾m+1, 则序列 σ \sigma σ 中存在一个长为 m + 1 m+1 m+1 的递增子序列. 相应地, 若存在某个 i i i, 使得 b i ⩾ n + 1 b_{i} \geqslant n+1 bi⩾n+1, 则序列 σ \sigma σ 中存在一个长为 n + 1 n+1 n+1 的递减子序列.
因此, 只需考虑: 对所有的 i = 1 , 2 , ⋯ , m n + 1 i = 1,2,\cdots, mn+1 i=1,2,⋯,mn+1, a i ⩽ m a_{i} \leqslant m ai⩽m 且 b i ⩽ n b_{i} \leqslant n bi⩽n 的情况.
基于以上假设, 若要求有序数对
(
a
,
b
)
(a,b)
(a,b) 满足
a
i
⩽
m
a_{i} \leqslant m
ai⩽m,
b
i
⩽
n
b_{i} \leqslant n
bi⩽n, 则这样的数对共有
m
n
mn
mn 对.这个数对所代表的是假设的, 递增/递减子序列的最大长度. 由鸽笼原理知: 因为序列长度为
m
n
+
1
mn+1
mn+1, 故必然存在整数
i
1
i_{1}
i1 和
i
2
i_{2}
i2, 满足:
1
⩽
i
1
<
i
2
⩽
m
n
+
1
1\leqslant i_{1} < i_{2} \leqslant mn+1
1⩽i1<i2⩽mn+1
使得:
(
a
i
1
,
b
i
1
)
=
(
a
i
2
,
b
i
2
)
.
(a_{i_{1}}, b_{i_{1}}) = (a_{i_{2}}, b_{i_{2}}).
(ai1,bi1)=(ai2,bi2).
由假设知:
x
i
1
,
x
i
2
x_{i_{1}}, x_{i_{2}}
xi1,xi2 不相等. 若
x
i
1
<
x
i
2
x_{i_{1}} < x_{i_{2}}
xi1<xi2, 则我们将比
x
i
2
x_{i_{2}}
xi2 更小的
x
i
1
x_{i_{1}}
xi1 作为任一个以
x
i
2
x_{i_{2}}
xi2 为首的递增子序列的起始, 这样得到
a
i
1
>
a
i
2
a_{i_{1}} > a_{i_{2}}
ai1>ai2. 若
x
i
1
>
x
i
2
x_{i_{1}} > x_{i_{2}}
xi1>xi2, 则我们将比
x
i
2
x_{i_{2}}
xi2 更大的
x
i
1
x_{i_{1}}
xi1 作为任一个以
x
i
2
x_{i_{2}}
xi2 为首的递减子序列的起始, 这样得到
b
i
1
<
b
i
2
b_{i_{1}} < b_{i_{2}}
bi1<bi2, 均和原假设矛盾.
综上可知, 原假设成立, 定理证毕. ■ \blacksquare ■
[例]
握手问题: 考虑一个 n n n 人组成的小组 ( n ⩾ 2 ) (n \geqslant 2) (n⩾2), 组内每人都可以和其余的人握手. 则组内必有两人和相同数量的人握了手.
[证明]
以 P 1 , P 2 , ⋯ , P n P_{1}, P_{2}, \cdots, P_{n} P1,P2,⋯,Pn 记组内 n n n 人. 以 S i S_{i} Si 记 P i P_{i} Pi 与他人握手的次数.
可知: 0 ⩽ S i ⩽ n − 1 0 \leqslant S_{i} \leqslant n-1 0⩽Si⩽n−1, 1 ⩽ i ⩽ n 1 \leqslant i \leqslant n 1⩽i⩽n. 因此, S i S_{i} Si 只能从 1 , 2 , ⋯ , n − 1 1,2,\cdots, n-1 1,2,⋯,n−1 中取值. 根据鸽笼原理立即得知: 必存在两个不同的正整数 i , j i,j i,j, 使 S i = S j S_{i} = S_{j} Si=Sj. ■ \blacksquare ■
下面, 我们以 “识人问题” 为引子, 深入介绍一个重要的鸽巢原理推广定理: Ramsey 定理.
[例]
识人问题: 在六个人中, 总能找出三个人彼此互相认识, 或找出三个彼此互相不认识的人.
设 k , l k,l k,l 为两个正整数, 必存在一个最小整数 R ( k , l ) R(k,l) R(k,l), 使得在 R ( k , l ) R(k,l) R(k,l) 人中, 总能找出 k k k 个互相熟识的人, 或者 l l l 个互不认识的人.
[证明]
要解决以上问题, 我们只需要 (也只能) 验证满足条件的正整数的存在性即可.
下面, 我们通过在 k k k 和 l l l 上使用双重数学归纳法, 证明 R ( k , l ) R(k,l) R(k,l) 的存在性.
若
k
=
1
k = 1
k=1 或
l
=
1
l = 1
l=1, 显然:
R
(
1
,
l
)
=
1
,
R
(
k
,
1
)
=
1.
R(1,l) = 1, ~~~ R(k,1) = 1.
R(1,l)=1, R(k,1)=1.
若
k
=
2
k = 2
k=2 或
l
=
2
l = 2
l=2, 且
m
i
n
{
k
,
l
}
=
2
min\{k,l\} = 2
min{k,l}=2, 可知:
R
(
2
,
l
)
=
l
,
R
(
k
,
2
)
=
k
.
R(2,l) = l, ~~~ R(k,2) = k.
R(2,l)=l, R(k,2)=k.
假设
R
(
k
−
1.
l
)
R(k-1.l)
R(k−1.l) 和
R
(
k
,
l
−
1
)
R(k,l-1)
R(k,l−1) 均已被确定. 且
k
,
l
⩾
3.
k,l \geqslant 3.
k,l⩾3.
下面, 说明 R ( k , l ) ⩽ R ( k − 1 , l ) + R ( k , l − 1 ) R(k,l) \leqslant R(k-1,l) + R(k,l-1) R(k,l)⩽R(k−1,l)+R(k,l−1):
设 X X X 为一个由 R ( k − 1 , l ) + R ( k , l − 1 ) R(k-1,l) + R(k,l-1) R(k−1,l)+R(k,l−1) 人组成的群体.
从 X X X 中选定一人 x x x. 下面, 我们将集合 X \ { x } X\backslash \{x\} X\{x} 分为 S , T S,T S,T. 其中:
S S S 为由所有认识 x x x 的人所组成的子集, T T T 为由所有不认识 x x x 的人组成的子集.
可知:
S
∪
T
=
X
\
{
x
}
,
S
∩
T
=
∅
S\cup T = X \backslash \{x\}, S\cap T = \empty
S∪T=X\{x},S∩T=∅
因为
∣
S
∣
+
∣
T
∣
=
R
(
k
−
1
,
l
)
+
R
(
k
,
l
−
1
)
−
1
|S| + |T| = R(k-1,l) + R(k,l-1)-1
∣S∣+∣T∣=R(k−1,l)+R(k,l−1)−1
因此, 要么
∣
S
∣
⩾
R
(
k
−
1
,
l
)
|S| \geqslant R(k-1,l)
∣S∣⩾R(k−1,l)
或者
∣
T
∣
⩾
R
(
k
,
l
−
1
)
|T| \geqslant R(k,l-1)
∣T∣⩾R(k,l−1)
否则
∣
S
∣
+
∣
T
∣
⩽
R
(
k
−
1
,
l
)
+
R
(
k
,
l
−
1
)
−
2.
|S| + |T| \leqslant R(k-1,l) + R(k,l-1)-2.
∣S∣+∣T∣⩽R(k−1,l)+R(k,l−1)−2.
不妨先假设 ∣ S ∣ ⩾ R ( k − 1 , l ) |S|\geqslant R(k-1,l) ∣S∣⩾R(k−1,l). 由归纳假设, 我们要么可找到一个大小为 k − 1 k-1 k−1 的子集 S 1 ⊂ S S_{1} \subset S S1⊂S, 在该子集中的人互相认识, 或者另一个大小为 l l l 的子集 T 1 ⊂ S T_{1} \subset S T1⊂S, 子集中的人互相不认识.
现在, 要么 S 1 ∪ { x } S_{1}\cup \{x\} S1∪{x} 为大小为 k k k 的, 包含所有互相认识的人的子集, 要么 T 1 T_{1} T1 为大小为 l l l 的, 包含所有互相不认识的人的子集.
下面, 我们假设
∣
S
∣
<
R
(
k
−
1
,
l
)
|S| < R(k-1,l)
∣S∣<R(k−1,l). 因此, 有
∣
T
∣
=
(
∣
X
∣
−
1
)
−
∣
S
∣
⩾
R
(
k
,
l
−
1
)
.
|T| = (|X|-1) - |S| \geqslant R(k,l-1).
∣T∣=(∣X∣−1)−∣S∣⩾R(k,l−1).
同样地, 由归纳假设: 在
T
T
T 中, 要么存在一个大小为
k
k
k 的子集
S
2
S_{2}
S2 包含了所有互相认识的人, 要么有一个大小为
l
−
1
l-1
l−1 的子集
T
2
T_{2}
T2, 包含了所有互相不认识的人.
因此, 在 S 2 S_{2} S2 中, 要么有 k k k 人互相认识, 要么有 l l l 个互相不认识的人. (他们在子集 T 2 ∪ { x } T_{2}\cup \{x\} T2∪{x} 中). ■ \blacksquare ■
3. Ramsey定理
定理4.2 (Ramsey 定理)
设正整数 l , k l,k l,k. 则必然存在某个最小整数 R ( k , l ) R(k,l) R(k,l), 使得对每个大小为 R ( k , l ) R(k,l) R(k,l) 的集合 X X X 和每个以集合 X X X 的二元子集为元素的集合 F F F, 要么存在一个大小为 k k k 的集合 S ⊂ X S \subset X S⊂X, 使得 S S S 的所有二元子集都在 F F F 中, 要么 存在一个大小为 l l l 的集合 T ⊂ X T \subset X T⊂X, 其所有的二元子集都不在 F F F 中.
实际上, 要计算出 Ramsey 数 R ( k , l ) R(k,l) R(k,l) 是非常困难的. Ramsey 定理向我们揭示: 绝对的无序是不可能的.