Article
计数运算
在学习概率论(Probability Theory)之前,我们必须先掌握如何精准地计数(Counting)。本笔记基于手写大纲,结合课程核心讲义进行整理和补充,旨在建立一个直观、严谨的计数知识体系。
CS 70 计数与组合数学精校笔记 (Note 12)
1. 序列计数 (Counting Sequences) —— 有序、不放回
1.1 核心场景
从含有 个元素的集合 中,不放回(Without replacement)地依次抽取 () 个元素组成一个序列。
- 特点:元素不能重复;顺序重要。例如,先抽到 再抽到 (结果为 )与先抽到 再抽到 (结果为 )被视为不同的结果。
1.2 计数原理:第一计数原理 (Product Rule)
第一计数原理(乘法原理):如果一个对象的构建可以分为 步连续的选择。第一步有 种选择;无论第一步如何选择,第二步都有 种选择;……;无论前 步如何选择,第 步都有 种选择。那么,构建该对象的总方法数为:
1.3 实例应用:扑克牌序列
-
问题:从 52 张牌中,不放回地依次抽取 5 张牌,能产生多少种不同的有序序列?
-
解析:
-
第 1 张牌:有 52 种选择;
-
第 2 张牌:剩余 51 种选择;
-
第 3 张牌:剩余 50 种选择;
-
第 4 张牌:剩余 49 种选择;
-
第 5 张牌:剩余 48 种选择。
-
根据第一计数原理,总序列数为:
-
2. 集合计数 (Counting Sets) —— 无序、不放回
2.1 核心场景
从集合 中抽取 个不同的元素,但不关心抽取的顺序。
- 特点:元素不能重复;顺序不重要。我们关心的不再是序列,而是抽出来的元素构成的子集(例如集合 和 是同一个集合)。
2.2 实例应用:扑克牌手牌
-
问题:从 52 张牌中,抽取 5 张作为一手牌(不计顺序),一共有多少种可能的组合(集合)?
-
解析(使用“分箱法”):
-
假设顺序重要,我们一共有 个不同的有序序列。
-
我们把每一个“无序的 5 张牌集合”看作一个盒子(Bin)。
-
每一个盒子对应的无序集合,如果加上顺序,可以排成 种不同的有序序列。
-
也就是说,每 个有序序列,都对应唯一一个无序盒子。这是一个 对 (-to-)的映射。
-
因此,无序盒子的总数(集合数)为:
-
2.3 核心工具:二项式系数 (Binomial Coefficient)
这种“从 个不同元素中选出 个元素且不计顺序”的方法数极为常用,记作 ,读作 “n choose k”( 选 ):
2.4 第二计数原理 (Division Rule)
第二计数原理(除法原理):设 为所有有序对象的集合, 为所有无序对象的集合。如果存在一个从 到 的 对 (-to-)的映射函数 (即每一个无序对象都精确对应 个不同的有序排列),则无序对象的总数为:
3. 有放回抽样 (Sampling with Replacement)
3.1 顺序重要(有放回,有顺序)
-
场景:每次抽取一个元素后,将它放回集合中,下一次还可以重复抽取,且抽取顺序会影响结果。
-
计算:每一次抽取都有完整的 种可能。如果要抽取 次,根据第一计数原理,总方法数为:
-
典型实例:
- 硬币投掷:投掷一枚硬币 次。每次有 2 种结果(正面/反面),总结果数为 。
- 掷骰子:连续掷 2 次 6 面骰子,总结果数为 种。
3.2 顺序不重要(有放回,无顺序)
- 场景:元素可以重复选择(有放回),但我们最终只关心每种元素被选了多少次,不关心选择的先后顺序。
思考:为什么此时第二计数原理(除法原理)失效了?
- 原因:因为不同的无序结果对应的有序排列数是不等的(即不存在一个统一的常数 )。
- 举例:假设从水果(苹果 A, 香蕉 B)里选 5 个。
- 若无序结果是“5 个香蕉 ”,其对应的有序序列只有 种:。
- 若无序结果是“4 个香蕉,1 个苹果 ”,其对应的有序序列有 种(苹果可以在 5 个位置中的任意一个)。
- 由于不同盒子的“装载量”不同,我们无法使用简单的除法(除以固定的 )来求解。
救星:插板法 / 隔板法 (Stars and Bars)
我们将这个复杂的分配问题转化为二进制字符串(由小球 0 和隔板 1 组成)的排布问题。
-
例题:现在有无限量的苹果、香蕉和橙子( 种水果)。你想要选择 5 个水果()来制作一份水果沙拉。一共有多少种不同的选择方法?
-
解析:
-
设定 个盒子(分别装苹果、香蕉、橙子)。我们用 5 个相同的小球(用
0表示)代表选中的水果。 -
为了把小球隔开分进 3 个盒子,我们需要 个隔板(用
1表示)。 -
例如,二进制串
0010100代表:- 第 1 个隔板前有 2 个
0选 2 个苹果; - 两个隔板之间有 1 个
0选 1 个香蕉; - 第 2 个隔板后有 2 个
0选 2 个橙子。
- 第 1 个隔板前有 2 个
-
这样,任何一种水果组合都一一对应于一个长度为 的二进制串,其中包含 个
0和 个1。 -
这个问题等价于:在 7 个位置中,选择 5 个位置放
0(或选择 2 个位置放1)。 -
因此,总方法数为:

-
总结:计数“四宫格”模型
在解决任何计数问题前,先问自己两个问题:1. 是否放回? 2. 顺序是否重要?
| 抽取方式 | 顺序重要 (Ordered) | 顺序不重要 (Unordered) |
|---|---|---|
| 有放回 (With Replacement) | (例: 投硬币, 掷骰子) | (例: 插板法, 水果沙拉问题) |
| 不放回 (Without Replacement) | (例: 第一计数原理, 牌组序列) | (例: 第二计数原理, 组合数) |
4. 组合证明 (Combinatorial Proofs)
组合证明的精髓在于“讲故事”。我们要证明一个数学等式 ,只需说明等式左边和右边是在用不同的视角,计算同一个计数问题(同一个故事)。
4.1 组合恒等式
💡 核心:如何理解二项式定理?
二项式定理的公式长这样:
它的物理本质其实是“做选择”。
把 写成 个括号相乘:
当我们把这个式子展开时,每一个乘积项都是从这 个括号中,要么挑 ,要么挑 乘出来的。
- 如果你想得到项 ,意味着你要在 个括号中,挑选出 个括号贡献出 ,剩下的 个括号贡献出 。
- 挑选括号的方法数,显然就是从 里选 的组合数:。
- 所以,每一个 前面的系数就是 。
📌 题目 (1):求 的具体值。
【代数法】
对比二项式定理,我们尝试让 :
因为 永远等于 1,所以左边就是 。
结果就是 。
📌 题目 (2):求 的具体值。
【代数法】
我们看这个求和公式:。
如果我们对比二项式定理:
如果我们让 ,代入进去:
代数秒杀!
【代数法:微积分求导妙用 ⚡】
我们知道:
两边同时对 求导:
(看!求导把指数上的 提到了前面,这完美创造出了我们需要的 !)
现在为了让右边的 重新变回 ,我们在两边同时乘以 :
为了匹配我们的目标公式中的 ,我们只需要令 即可:
(1) 二项式子集恒等式 (Total Subsets Identity)
- 故事背景:我们要计算一个含有 个元素的集合 的所有可能子集(幂集)的总数。
- 视角一 (LHS):按子集的大小进行分类计数。
- 大小为 0 的子集(空集)有 种;
- 大小为 1 的子集有 种;
- ……;
- 大小为 的子集有 种。
- 总数即为:。
- 视角二 (RHS):对集合中的每个元素做决策。
- 对于第 1 个元素,可以选择“在子集中”或“不在子集中”(2 种可能);
- 对于第 2 个元素,同样有 2 种可能;
- ……;
- 每个元素都有 2 种可能,总共 个元素。
- 根据第一计数原理,总子集数为:。
- 结论:两边算的是同一个故事,因此 。
(2) 曲棍球棒恒等式 (Hockey-stick Identity) —— 详细通俗解析 💡
【为什么叫曲棍球棒?】 在杨辉三角(Pascal’s Triangle)中,如果你从某一斜行最外侧的 开始向下累加,加到某一步 时,它们求和的结果刚好等于它下一行往里拐弯的那一项 。这在几何上连起来极像一个曲棍球棒!
💡 通俗“讲故事”证明:
-
故事背景:我们要从一共有 个候选人(编号为 )的群体中,选出一个包含 个人的委员会。
-
视角一 (LHS):
-
直接一步到位,从 个人里选 个人,方法数显然为:
-
-
视角二 (RHS) —— 按“选中的人中,最小编号是谁”来分情况讨论: 我们可以把所有人排成一排,编号为 。
- 情况 1:选中的人里,最小编号是 。
- 这意味着 号被确定选中了。
- 剩下我们必须从比 大的候选人(即 ,共 个人)里,再挑选出 个人。
- 方法数为: 种。
- 情况 2:选中的人里,最小编号是 。
- 这意味着 号绝不能被选,且 号被确定选中。
- 剩下我们必须从比 大的候选人(即 ,共 个人)里,再挑选出 个人。
- 方法数为: 种。
- 情况 3:选中的人里,最小编号是 。
- 同理, 号不选, 号必选。剩下从 个人里选 个。
- 方法数为: 种。
- ……
- 最后一种情况:选中的人里,最小编号是 。
- 这意味着前 个人都不能选,而 号必选。
- 此时后面只剩下 个人(即 ),我们必须从中挑出 个人。
- 方法数为:(即 1 种,后面的人全选)。
- 注意:最小编号不可能大于 ,因为如果最小编号是 ,后面的人数不够凑满 个了。
- 情况 1:选中的人里,最小编号是 。
-
大团圆:因为这些情况是互斥且完备的,我们将所有情况的方法数加起来,就得到了:
-
结论:两边结果必然相等,曲棍球棒恒等式得证!
【组合故事法】
- 故事:你要从 个不同口味的甜甜圈里,挑选一些买回家(可以不买,也可以全买)。
- 视角一 (RHS):对每一个甜甜圈,你都有 2 种决策:“买”或“不买”。一共 个甜甜圈,根据乘法原理,总方法数为 。
- 视角二 (LHS):按照你“买了多少个”分类。
- 买 0 个的方法数:
- 买 1 个的方法数:
- ……
- 买 个的方法数:
- 把所有情况加起来,总数就是:
- 结论:两个视角算的是同一个甜甜圈问题,所以 。
【组合故事法】
故事:学校有 个学生,我们要把每个学生分到以下三个组之一:【红队】、【蓝队】或【替补席(不参赛)】。
视角一 (RHS):每个学生都有 3 种选择。 个学生总共有 种分配方案。
视角二 (LHS):我们先选出 个“要上场参赛”的学生,剩下的 个自动进替补席。
从 个学生里挑出 个上场队员: 种方法。
这 个上场的队员,每个人可以选择加入【红队】或【蓝队】(2 种选择):共 种方法。
遍历所有可能的参赛人数 (从 0 到 并求和):
结论:同一个故事,因此 。
4.2 排列与错位排列 (Derangements)
- 排列 (Permutations): 将 个不同的元素进行全排列,我们关心的是每一个元素在序列中的特定顺序,总排列数为 。如果第 个元素恰好排在第 个位置上(即 ),我们称其为该排列的一个不动点 (Fixed Point)。
- 错位排列 (Derangement): 指没有任何一个元素留在它原本位置上的排列(即对所有 ,都有 )。
- 记 为大小为 的集合的错位排列总数。
- 例如当 时,总共有 种排列。其中错位排列只有 2 种: 和 。因此 。
递推公式 (Theorem 12.2)
对于 ,错位排列数满足以下递推关系:
递推关系的直观证明(故事法):
考虑最后一个位置 上的元素 。因为是错位排列,位置 上不能放元素 。假设放了元素 (共有 种选择,即 )。 对于确定的 ,我们讨论元素 被放在了哪里:
- 情况 1:元素 刚好放在了位置 上(即 与 互换了位置)。
- 此时 和 的位置已经锁死。剩下的 个元素必须在剩下的 个位置上实现错位排列。
- 这种情况有 种方法。
- 情况 2:元素 没有放在位置 上。
- 我们可以把“不能放在位置 上的元素 ”等价地看作“不能放在位置 上的元素 ”。
- 此时,除了已经放好在位置 的元素 之外,剩下的 个元素(含元素 )在 个位置上进行错位排列。
- 这种情况有 种方法。
合并以上两种情况,并乘以 的 种选择,即得:。
5. 容斥原理 (The Principle of Inclusion-Exclusion, PIE)
容斥原理的核心思想是:先不考虑重叠地把所有可能性加起来,再通过“奇加偶减”来修正多算或漏算的部分。
5.1 两个集合与三个集合的容斥
-
两个集合的并集(手写笔记内容修正):
- 解析:直接相加会把重合部分 算两次,因此必须减去一次。
-
三个集合的并集(延伸补充):
5.2 一般性容斥原理公式
对于任意 个有限集合 ,其并集大小为:
5.3 终极大杀器:用容斥原理求解错位排列
我们可以用容斥原理完美推导出错位排列的精确通项公式!
-
定义属性:设整个排列空间的大小为 。设 为“第 个元素在原本位置上(即 )”的所有排列集合。
-
分析目标:错位排列是指“没有任何一个元素在原本位置上”,即:
-
计算交集项:
- 单个集合大小:(因为 位置固定,其余 个元素任意排),一共有 个这样的集合。
- 两个集合交集大小:,一共有 个这样的两两交集。
- 一般地, 个集合的交集大小为 ,共有 个。
-
代入容斥原理:
因为 ,所以:
-
最终公式:
写成求和形式即为:
【冷知识 💡】 当 时,泰勒展开式 。 也就是说,当人数非常多时,所有人拿错作业的概率收敛于一个常数 !

