前置
基本计数原理
设 n 为非负整数。记 [n]={1,…,n},并约定 [0]=∅。
称集合 A 的基数为 n,记 ∣A∣=n,若存在双射 A→[n]。
引理. ∣[n]∣=n。若 ∣A∣=m 且 ∣A∣=n,则 m=n。若 ∣A∣=m 且存在双射 A→B,则 ∣B∣=m。
加法原理. 设 A∩B=∅,且 ∣A∣=m,∣B∣=n。则 ∣A∪B∣=m+n。
proof
对 n 归纳。
n=0 时 B=∅,故 A∪B=A,而自然数加法给出 m+0=m。
设 ∣B∣=n 时结论成立。现在 ∣B∣=n+1。取双射 g:B→[n+1],令 b=g−1(n+1)。g 在 B∖{b} 上的限制是到 [n] 的双射,故 ∣B∖{b}∣=n。并且 A∩(B∖{b})=∅。由归纳假设,∣A∪(B∖{b})∣=m+n。b 不在这个并中。把双射 A∪(B∖{b})→[m+n] 延拓,把 b 映到 m+n+1,得到到 [m+n+1] 的双射。因此 ∣A∪B∣=(m+n)+1。自然数加法给出 (m+n)+1=m+(n+1)。
乘法原理. 设 ∣A∣=m,∣B∣=n。则 ∣A×B∣=mn。
proof
取双射 f:A→[m]、g:B→[n]。(x,y)↦(f(x),g(y)) 是 A×B 到 [m]×[n] 的双射。因此只要证明 ∣[m]×[n]∣=mn。对 n 归纳。
n=0 时 [m]×[0]=∅,基数为 0,而 m⋅0=0。
设 ∣[m]×[n]∣=mn。则
[m]×[n+1]=([m]×[n])∪([m]×{n+1}),
右边两项不交。(i,n+1)↦i 是 [m]×{n+1} 到 [m] 的双射,故第二项基数为 m。由加法原理,基数为 mn+m。自然数乘法给出 mn+m=m(n+1)。
容斥原理
称集合 A 为有限集,若存在非负整数 m 使 ∣A∣=m。
引理. 设 ∣A∣=m,且 B⊆A。则存在整数 k,0≤k≤m,使得 ∣B∣=k 且 ∣A∖B∣=m−k。从而 ∣A∣=∣B∣+∣A∖B∣。
proof
取双射 f:A→[m]。令 C=f(B)。则 C⊆[m]。f 在 B 上的限制是 B 到 C 的双射,在 A∖B 上的限制是 A∖B 到 [m]∖C 的双射。因此只要证明:若 C⊆[m],则存在整数 k,0≤k≤m,使 ∣C∣=k 且 ∣[m]∖C∣=m−k。对 m 归纳。
m=0 时 [0]=∅,故 C=∅。取 k=0。∣[0]∖C∣=0,而 0−0=0。
设已对某个 m 成立:凡 C⊆[m],都有这样的 k。现在设 C⊆[m+1]。映射 m+1↦1 是 {m+1} 到 [1] 的双射,故 ∣{m+1}∣=1。
若 m+1∈/C,则 C⊆[m]。由归纳假设,∣C∣=k 且 ∣[m]∖C∣=m−k,其中 0≤k≤m。此时
[m+1]∖C=([m]∖C)∪{m+1},
右边两项不交。由加法原理,∣[m+1]∖C∣=(m−k)+1。自然数减法给出 (m−k)+1=(m+1)−k。又 k≤m,故 k≤m+1。
若 m+1∈C,令 C′=C∖{m+1}。则 C′⊆[m],且 C=C′∪{m+1},这两项不交。由归纳假设,∣C′∣=k 且 ∣[m]∖C′∣=m−k。加法原理给出 ∣C∣=k+1。又 [m+1]∖C=[m]∖C′,故其基数为 m−k。自然数减法给出 m−k=(m+1)−(k+1)。这里 0≤k≤m,故 0≤k+1≤m+1。
由归纳,对一切 m 与一切 C⊆[m],这样的 k 存在。设 ∣C∣=k。取双射 C→[k],与 B 到 C 的双射复合,得到 B 到 [k] 的双射,故 ∣B∣=k。同样 ∣A∖B∣=m−k。自然数加法给出 k+(m−k)=m,因此 ∣A∣=∣B∣+∣A∖B∣。
命题. 设 A,B 为有限集。则
∣A∪B∣=∣A∣+∣B∣−∣A∩B∣.
proof
A∩B⊆B,且 B∖A⊆B。B 有限,由引理,这两集有限。
B=(A∩B)∪(B∖A),两项不交。由加法原理,∣B∣=∣A∩B∣+∣B∖A∣。
A∪B=A∪(B∖A),两项不交。由加法原理,∣A∪B∣=∣A∣+∣B∖A∣。
把后一式两边加上 ∣A∩B∣,再用前一式替换 ∣B∖A∣+∣A∩B∣:
∣A∪B∣+∣A∩B∣=∣A∣+∣B∖A∣+∣A∩B∣=∣A∣+∣B∣.
因此 ∣A∣+∣B∣ 等于 ∣A∩B∣ 与非负整数 ∣A∪B∣ 之和。自然数减法给出 ∣A∪B∣=∣A∣+∣B∣−∣A∩B∣。
定理. 设 n≥1,A1,…,An 为有限集。则
i=1⋃nAi=∅=S⊆[n]∑(−1)∣S∣+1i∈S⋂Ai.
右端在整数中计算:∣S∣ 为奇数时该项相加,∣S∣ 为偶数时该项相减。
proof
S⊆[n] 非空时,取 j∈S,则 ⋂i∈SAi⊆Aj。由引理,这个交有限。
对 n 归纳。
n=1 时,非空子集只有 {1}。映射 1↦1 是 {1} 到 [1] 的双射,故 ∣{1}∣=1,符号为 (−1)2=1。右边就是 ∣A1∣。
设等式对某个 n 与任意 n 个有限集成立。现设 A1,…,An+1 为有限集。记 Un=⋃i=1nAi。归纳假设给出 Un 有限,且
∣Un∣=∅=S⊆[n]∑(−1)∣S∣+1i∈S⋂Ai.
对每个 i∈[n],Ai∩An+1⊆Ai,由引理有限。x∈Un∩An+1 当且仅当 x∈An+1 且有某个 i∈[n] 使 x∈Ai,当且仅当有某个 i∈[n] 使 x∈Ai∩An+1。因此
Un∩An+1=i=1⋃n(Ai∩An+1).
对这 n 个有限集用归纳假设:
∣Un∩An+1∣=∅=T⊆[n]∑(−1)∣T∣+1i∈T⋂(Ai∩An+1).
对非空的 T⊆[n],
i∈T⋂(Ai∩An+1)=i∈T∪{n+1}⋂Ai.
Un 与 An+1 有限。由两集合的命题,
∣Un∪An+1∣=∣Un∣+∣An+1∣−∣Un∩An+1∣.
n+1 个集合时,右边是
∅=S⊆[n+1]∑(−1)∣S∣+1i∈S⋂Ai.
[n+1] 的非空子集分成三类:不含 n+1 的、等于 {n+1} 的、以及形如 T∪{n+1} 的,其中 T⊆[n] 且 T=∅。
T⊆[n] 时 n+1∈/T。∣[n]∣=n,由引理 T 有限。映射 n+1↦1 是 {n+1} 到 [1] 的双射,故 ∣{n+1}∣=1。这两项不交,加法原理给出 ∣T∪{n+1}∣=∣T∣+1。因此第三类中 S=T∪{n+1} 的符号满足 (−1)∣S∣+1=(−1)∣T∣+2。∣T∣+2 与 ∣T∣ 同奇偶,故 (−1)∣T∣+2=(−1)∣T∣。∣T∣+1 与 ∣T∣ 奇偶相反,故 (−1)∣T∣=−(−1)∣T∣+1。第三类的和等于
∅=T⊆[n]∑(−(−1)∣T∣+1)i∈T∪{n+1}⋂Ai=−∣Un∩An+1∣.
{n+1} 的项是 ∣An+1∣。不含 n+1 的那些子集就是 [n] 的非空子集,其和为 ∣Un∣。三类相加,右边的和等于 ∣Un∣+∣An+1∣−∣Un∩An+1∣,也就是 ∣Un∪An+1∣。由归纳,等式对一切 n≥1 成立。
n=3 时,把 [3] 的非空子集按基数展开。三个有限集 A,B,C 满足
∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣A∩C∣−∣B∩C∣+∣A∩B∩C∣.
排列数
设 n,k 为非负整数。
从 [k] 到 [n] 的单射全体为
P(n,k)={f:[k]→[n]∣f 是单射}.(1)
排列数是这个集合的基数 Ank=∣P(n,k)∣。
从 [n] 中有序选取 k 个不同元素的全体是
P(n,k)={(a1,…,ak)∈[n]k∣i=j⇒ai=aj}.(2)
f↦(f(1),…,f(k)) 是 (1) 与 (2) 之间的双射。k=0 时空函数对应空元组。因此两个集合基数相同。
组合数
[n] 的 k 元子集全体为
C(n,k)={S⊆[n]:∣S∣=k},(3)
组合数是 Cnk=∣C(n,k)∣。
0!=1,并且 n≥1 时 n!=n(n−1)!。k>n 时 [n] 没有 k 元子集,故 Cnk=0。
阶乘作为非负整数。a∣b 且 a=0 时,存在整数 q 使 b=qa。整数无零因子,消去律给出 q 唯一,记作 b/a。c=0 时 (bc)/(ac)=b/a。若两商的分母相同,则相加是分子相加后的商。下面的分式都是这个整数商。
命题. 设 n,k 为非负整数且 k≤n。则 k!(n−k)!∣n!,且
Cnk=k!(n−k)!n!.
proof
对 n 用数学归纳法:对每个非负整数 n,凡 0≤k≤n,都有 k!(n−k)!∣n!,且 Cnk=n!/(k!(n−k)!)。
n=0 时只有 k=0。C00=1,而 0!/(0!0!)=1。
设等式对某个 n 与一切 0≤j≤n 已成立。现在证它对 n+1 与一切 0≤k≤n+1 成立。
k=0 时,[n+1] 只有一个空子集,故 Cn+10=1=(n+1)!/(0!(n+1)!)。k=n+1 时,Cn+1n+1=1=(n+1)!/((n+1)!0!)。
设 1≤k≤n。C(n+1,k) 分成含 n+1 与不含 n+1 的两类。含 n+1 的子集形如 T∪{n+1},T∈C(n,k−1),故这类与 C(n,k−1) 等势。不含 n+1 的子集就是 C(n,k)。两类不交,并且并起来是 C(n+1,k)。由加法原理,
Cn+1k=Cnk−1+Cnk.
归纳假设给出
Cnk−1=(k−1)!(n−k+1)!n!,Cnk=k!(n−k)!n!.
(n−k+1)!=(n+1−k)!,k(k−1)!=k!。分子分母同乘 k 或 n+1−k,商不变。两商分母相同,相加等于分子之和的商。因此
Cn+1k=k!(n+1−k)!n!k+k!(n+1−k)!n!(n+1−k)=k!(n+1−k)!n!(n+1)=k!(n+1−k)!(n+1)!.
最后一步用定义 (n+1)!=(n+1)n!。由归纳,等式对一切 n 与 0≤k≤n 成立。