跳到主要内容

组合数学

组合数学研究“有限对象有多少种构造方式”。关键能力是把复杂问题拆成可计数的结构。

1. 两大计数原理

1.1 加法原理

若任务由互斥的 kk 类方法完成,第 ii 类有 mim_i 种,则总数为

i=1kmi. \sum_{i=1}^k m_i.

1.2 乘法原理

若任务分 kk 步完成,第 ii 步有 mim_i 种,则总数为

i=1kmi. \prod_{i=1}^k m_i.

例题 1(加乘混合)

班级从 4 名男生与 3 名女生中选 1 名班长与 1 名学习委员(职位不同,可同组别)。有多少种选法?

解: 先选班长 77 种,再选学习委员 66 种,共 7×6=427\times6=42 种。

2. 排列与组合

2.1 公式

  • 排列:
P(n,k)=n!(nk)! P(n,k)=\frac{n!}{(n-k)!}
  • 组合:
C(n,k)=(nk)=n!k!(nk)! C(n,k)=\binom{n}{k}=\frac{n!}{k!(n-k)!}

例题 2(有条件排列)

5 本不同书排成一行,甲乙两本必须相邻,有多少种?

解: 将甲乙视为一个整体,与其余 3 本共 4 个对象排列:4!4!;甲乙内部还可交换 2!2!。总数 4!×2=484!\times2=48

例题 3(分步组合)

从 8 人中选 3 人参加算法赛、再选 2 人参加数学赛(不可重复),共有多少种?

解:

(83)(52)=56×10=560. \binom83\binom52=56\times10=560.

3. 二项式定理与组合恒等式

3.1 二项式定理

(x+y)n=k=0n(nk)xnkyk. (x+y)^n=\sum_{k=0}^n\binom{n}{k}x^{n-k}y^k.

3.2 常见恒等式

k=0n(nk)=2n,k=0nk(nk)=n2n1. \sum_{k=0}^n\binom{n}{k}=2^n, \quad \sum_{k=0}^n k\binom{n}{k}=n2^{n-1}.

例题 4(系数法)

(1+x)6(1+x)^6x3x^3 的系数。

解: 系数为 (63)=20\binom63=20

4. 容斥原理与错排问题

4.1 一般形式的容斥原理

SS 是有限集,P1,P2,,PnP_1, P_2, \dots, P_nnn 个性质。令 AiA_iSS 中具有性质 PiP_i 的元素子集。则不具备任何性质的元素个数为:

A1A2An=SAi+AiAj+(1)nA1An.|\overline{A_1} \cap \overline{A_2} \cap \dots \cap \overline{A_n}| = |S| - \sum |A_i| + \sum |A_i \cap A_j| - \dots + (-1)^n |A_1 \cap \dots \cap A_n|.

也可以表示为具有至少一个性质的元素个数:

i=1nAi=k=1n(1)k11i1<<iknAi1Aik.\left| \bigcup_{i=1}^n A_i \right| = \sum_{k=1}^n (-1)^{k-1} \sum_{1 \le i_1 < \dots < i_k \le n} |A_{i_1} \cap \dots \cap A_{i_k}|.

4.2 应用:错排问题 (Derangements)

定义nn 个元素的排列 σ\sigma,若对所有 ii,都有 σ(i)i\sigma(i) \neq i,则称其为错排。其个数记为 DnD_n

公式推导:利用容斥原理,令 AiA_i 为满足 σ(i)=i\sigma(i)=i 的排列集合。 S=n!|S| = n!Ai=(n1)!|A_i| = (n-1)!AiAj=(n2)!|A_i \cap A_j| = (n-2)!

Dn=n!(111!+12!+(1)n1n!)=n!k=0n(1)kk!.D_n = n! \left( 1 - \frac{1}{1!} + \frac{1}{2!} - \dots + (-1)^n \frac{1}{n!} \right) = n! \sum_{k=0}^n \frac{(-1)^k}{k!}.

递推关系Dn=(n1)(Dn1+Dn2),D1=0,D2=1.D_n = (n-1)(D_{n-1} + D_{n-2}), \quad D_1 = 0, D_2 = 1.

例题 6(一般容斥应用)

11100100 中不能被 2,3,52, 3, 5 整除的整数个数。

S=100|S|=100。令 A1,A2,A3A_1, A_2, A_3 分别为能被 2,3,52, 3, 5 整除的数。 A1=100/2=50,A2=33,A3=20|A_1| = \lfloor 100/2 \rfloor = 50, |A_2| = 33, |A_3| = 20A1A2=100/6=16,A1A3=10,A2A3=6|A_1 \cap A_2| = \lfloor 100/6 \rfloor = 16, |A_1 \cap A_3| = 10, |A_2 \cap A_3| = 6A1A2A3=100/30=3|A_1 \cap A_2 \cap A_3| = \lfloor 100/30 \rfloor = 3。 结果 =100(50+33+20)+(16+10+6)3=100103+323=26= 100 - (50+33+20) + (16+10+6) - 3 = 100 - 103 + 32 - 3 = 26

5. 进阶计数:多重集的排列与组合

5.1 多重集的全排列

n=n1+n2++nkn = n_1 + n_2 + \dots + n_k,其中第 ii 类元素有 nin_i 个。其全排列数为:

n!n1!n2!nk!.\frac{n!}{n_1! n_2! \dots n_k!}.

5.2 多重集的组合(隔板法)

nn 种元素中取 kk 个(每种无限量),方案数为:

(n+k1k).\binom{n+k-1}{k}.

6. 本章练习

练习 1:基础计数

1110001000 的整数中,有多少个数的各位数字之和等于 99

Check Solution

设三位数为 x1x2x3x_1x_2x_3,则 x1+x2+x3=9x_1+x_2+x_3=9,其中 0xi90 \le x_i \le 9。 利用隔板法,相当于将 9 个小球放入 3 个盒子(可空):(9+319)=(112)=55\binom{9+3-1}{9} = \binom{11}{2} = 55。 注:10001000 的各位数字之和为 11,不计入。

练习 2:错排应用

5 个人去参加聚会,结束后随机拿走一顶帽子。求没有一个人拿到自己帽子的概率。

Check Solution

总情况 5!=1205! = 120。 错排数 D5=5!(11+1/21/6+1/241/120)=6020+51=44D_5 = 5!(1 - 1 + 1/2 - 1/6 + 1/24 - 1/120) = 60 - 20 + 5 - 1 = 44。 概率 P=44/120=11/300.367P = 44/120 = 11/30 \approx 0.367

练习 3:深度容斥

x1+x2+x3=15x_1+x_2+x_3=15 的整数解个数,限制条件 0xi60 \le x_i \le 6

Check Solution

总解数(无上限限制):S=(15+3115)=(172)=136|S| = \binom{15+3-1}{15} = \binom{17}{2} = 136。 令 AiA_ixi7x_i \ge 7 的解集。 A1:y1+x2+x3=8    (8+318)=(102)=45|A_1|: y_1+x_2+x_3=8 \implies \binom{8+3-1}{8} = \binom{10}{2} = 45A1A2:y1+y2+x3=1    (1+311)=(31)=3|A_1 \cap A_2|: y_1+y_2+x_3=1 \implies \binom{1+3-1}{1} = \binom{3}{1} = 3A1A2A3=0|A_1 \cap A_2 \cap A_3| = 0 (因为 7+7+7=21>157+7+7=21>15)。 由容斥原理:1363×45+3×30=136135+9=10136 - 3 \times 45 + 3 \times 3 - 0 = 136 - 135 + 9 = 10

练习 4:Lucas 定理(思考题)

简述计算 (nk)(modp)\binom{n}{k} \pmod p 的方法(pp 为小质数)。

Check Solution

使用 Lucas 定理(nk)i=0k(niki)(modp)\binom{n}{k} \equiv \prod_{i=0}^k \binom{n_i}{k_i} \pmod p,其中 ni,kin_i, k_in,kn, kpp 进制表示的各位系数。

7. 学习闭环