Skip to content

Lecture 17:更多计数

1. 容斥原理(Inclusion-Exclusion,PIE)

问题起点: 加法法则要求集合两两不相交。若集合有交叉,该如何计算并集的大小?

两个集合:

|AB|=|A|+|B||AB|

三个集合:

|ABC|=|A|+|B|+|C||AB||AC||BC|+|ABC|

一般形式(n 个集合):

|i=1nAi|=i|Ai|i<j|AiAj|+i<j<k|AiAjAk|±|A1An|

规律:加单集合,减两两交,加三重交,……交替进行直到 n 重交。

定理(PIE 的等价形式)

U=i[n]Ai,则

I[n](1)|I||iIAi|=0

其中约定 =U

证明: 对任意 xU,设 Ix=i:xAi(非空)。x 对左侧的贡献为 IIx(1)|I|。取 Ix 中任意一个元素 i,对偶映射 IIi 在偶数大小子集和奇数大小子集之间建立双射,故贡献之和为 0。

应用:与 n=pqr 互质的数的个数

n=pqr(三个不同素数之积),求 1,2,,n 中与 n 互质的数的个数。

Ap,Aq,Ar 分别为 1,,np,q,r 的倍数的集合。

由容斥原理:

|ApAqAr|=np+nq+nrnpqnprnqr+npqr

化简后,互质的数的个数为:

n|ApAqAr|=(p1)(q1)(r1)

2. 鸽巢原理(Pigeonhole Principle)

定理:|A|>|B|,则任意全函数 f:AB 均不是单射——即存在 a1a2A 使得 f(a1)=f(a2)

形象地说:鸽子(A)比鸽巢(B)多,则必有某个鸽巢里住了至少两只鸽子。

特点:非构造性。 只能证明碰撞存在,无法直接找出具体的碰撞对象。

例: 房间里超过 26 人,则必有两人姓名首字母相同。

例(配对袜子): n 种颜色的袜子各一双,至少取多少只才保证凑成一双?答案恰好是 n+1n 只不能保证,n+1 只由鸽巢原理保证)。

例(波士顿居民): 波士顿约 65 万人,头发数量至多约 20 万根。人数 > 可能的发量种数,故必有两位非秃头的波士顿居民发量完全相同。

例(无损压缩的不可能性): 长度为 n 的二进制串共 2n 个,而长度更短的串只有 2n1 个。任何全函数从较大集合到较小集合都有碰撞,故不存在对所有 n 位串都严格缩短的无损压缩方案。

广义鸽巢原理:|A|>k|B|,则任意从 AB 的全函数必有某个元素 bB 被至少 k+1 个元素映射到。

棋盘例题:8×8 棋盘的 64 格中放置 33 个车,证明可以找到 5 个互不攻击的车(即位于 5 个不同行和 5 个不同列)。

构造: 将棋盘 64 个格子用数字 1~8 标记(见课件中的"斜条纹"分组,每组恰好 8 个格子,每行每列各含一个)。将 33 个车的标记视为鸽子,8 个标记值视为鸽巢。由广义鸽巢原理(33>4×8),必有某个标记值对应至少 5 个车;这 5 个车的标记相同,意味着它们位于 5 个不同行、5 个不同列,互不攻击。


3. 组合恒等式与双重计数

核心思路: 对同一个集合用两种不同方式计数,令结果相等,得到恒等式。

恒等式一

k=0n(nk)=2n

证明:S1,,n 的所有子集构成的集合。

  • 一方面,|S|=2n(每个元素独立选入或不选入)。
  • 另一方面,按子集大小分类,大小为 k 的子集有 (nk) 个,由加法法则 |S|=k=0n(nk)。 两式相等即得。

二项式定理(Binomial Theorem)

x+y)n=k=0n(nk)xkynk

证明: 展开 (x+y)n2n 个形如 a1a2an(每个 aixy)的项。xkynk 项的系数 = 从 n 个位置中选 k 个位置填 x 的方案数 =(nk)

多项式定理(Multinomial Theorem)

(i=1mxi)n=k1++km=n(nk1,k2,,km)i=1mxiki

其中多项式系数为:

(nk1,k2,,km)=n!k1!,k2!,,km!

Pascal 恒等式

(nk)=(n1k1)+(n1k)

组合证明:S1,,n 的所有大小为 k 的子集。

  • 包含 n 的子集:还需从 1,,n1 中选 k1 个,共 (n1k1) 种。
  • 不包含 n 的子集:从 1,,n1 中选 k 个,共 (n1k) 种。 两类不相交且覆盖所有子集,由加法法则得证。

该恒等式说明帕斯卡三角(Pascal's Triangle)中每个数等于其正上方两数之和。帕斯卡三角第 n 行之和为 2n,各对角线之和给出斐波那契数列。


附录:常用求和/求积记号

i=1nxi=x1+x2++xn,i=1nxi=x1×x2××xni=1nSi=S1Sn,i=1nSi=S1Sn[n]:=1,2,,n

边界约定:=0=1==U(全集)。