0%

计数法则:组合数学的第一步

计数法则:组合数学的第一步

如果说数学是一座大厦,那么组合数学就是砌第一块砖的地方。 而计数法则,就是这块砖上的纹路——看似简单,却是整个结构的根基。

引言:从数数说起

你可能觉得”数数”谁不会?从一数到十,简直是幼儿园小朋友的技能。但今天我们要聊的”计数”,可不仅仅是”一、二、三、四、五”这么简单。

想象一下这样的场景:今天是你的生日,你邀请了 10 位朋友来参加聚会。餐厅有一道招牌菜,你可以选择要么吃鱼,要么吃素食。现在的问题是:你有多少种方式从这两道菜中选择一道?

简单,2 种。

但如果菜单变成了:鱼、素食、牛排三种主菜任选其一呢?3 种。

那如果现在告诉你:第一道菜你可以选鱼或素食,第二道菜你可以选咖啡、茶或果汁,而且两道菜都必须选呢?

这就从简单的”一个接一个”变成了”组合选择”。而这,正是组合数学要解决的问题。


一、加法原理:分道扬镳的计数

什么是加法原理?

让我们用一个生活化的场景来理解:

你今天出门要买一件上衣。商店里有一排货架: - 左边的货架挂了 3 件 T 恤 - 右边的货架挂了 5 件衬衫

如果你只能买一件上衣,请问有多少种选择?

答案:3 + 5 = 8 种

这就是加法原理:当一个问题可以分为几个互不相交的类别时,总的计数等于各类别计数之和。

🏠 形象的比喻:分叉的路口

想象你站在一个分叉路口:

1
2
3
          /-- 路径A(3条小路)
起点 ----<
\-- 路径B(5条小路)

你要从起点到达终点,只能走其中一条路。那么从起点到终点,总共有 3 + 5 = 8 种走法。

关键点在于:路径 A 和路径 B 是”不相交的”——你不可能同时走在 T 恤区的货架和衬衫区的货架上。你必须选择其中一个”世界”。

形式化的表达

如果完成一件事有 \(n\) 类方式,每类方式分别有 \(m_1, m_2, ..., m_n\) 种方法,且这些方法互不重叠,那么完成这件事的总方法数是:

\[m_1 + m_2 + ... + m_n\]

生活中的加法原理

例子 1:从北京去上海,可以坐飞机(5 班)、高铁(10 班)、或自驾(1 条路线)。总共有 5 + 10 + 1 = 16 种方式。

例子 2:今天晚餐要么吃中餐(8 家店可选),要么吃西餐(6 家店可选)。总共有 8 + 6 = 14 种选择。

例子 3:买彩票,要么中要么不中。等等,这个好像不太对——中彩票的概率和”方式数”不是一码事。我们后面会专门讲概率,先把基础打牢。


二、乘法原理:步步为营的计数

什么是乘法原理?

现在换一个问题:

你今天要穿一套衣服。假设你有: - 3 件上衣(T 恤、衬衫、卫衣) - 2 条裤子(牛仔裤、休闲裤)

上衣和裤子必须各穿一件,请问有多少种不同的穿法?

答案:3 × 2 = 6 种

这就是乘法原理:当一个问题需要分步骤完成,每个步骤之间是独立的时,总的计数等于各步骤计数之积。

🏠 形象的比喻:组装流水线

想象你在组装一辆自行车:

1
2
3
4
5
第一步:装车轮(2 个选择:公路轮 或 山地轮)

第二步:装车架(3 个选择:铝合金、碳纤维、钢架)

第三步:装把手(4 种选择:直把、弯把、平把、蝴蝶把)

要完成这辆自行车,你需要依次完成三个步骤。每个步骤都有若干种选择,而且这些选择是”层层递进”的——你必须先选车轮,再选车架,最后选把手。

总的选择数 = 2 × 3 × 4 = 24 种!

这就是乘法原理的魔力:它不是简单的加法累加,而是指数级的爆炸增长

形式化的表达

如果完成一件事需要 \(n\) 个步骤,每个步骤分别有 \(m_1, m_2, ..., m_n\) 种方法,且各步骤相互独立,那么完成这件事的总方法数是:

\[m_1 \times m_2 \times ... \times m_n\]

生活实例

例子 1:你需要设置一个密码,要求是”字母 + 数字 + 字母”的格式。字母有 26 种选择(假设不区分大小写),数字有 10 种选择。总共有 26 × 10 × 26 = 26² × 10 = 6760 种密码。

例子 2:从北京去上海旅游,飞机有 5 班,到达后酒店有 10 家可选。总行程安排:5 × 10 = 50 种。

例子 3:买一套试卷,有数学 3 本、英语 2 本、物理 2 本。如果每科都要买一本,总共 3 × 2 × 2 = 12 种买法。


三、加法 vs 乘法:到底是”或”还是”和”?

这是很多初学者容易混淆的地方。让我用一张表来总结:

场景 关键词 原理 公式
从 A 或 B 中选一个 “或者”、“或” 加法 m₁ + m₂
先选 A 再选 B “然后”、“且” 乘法 m₁ × m₂

🎯 记住一句口诀

“或者用加法,然后用乘法”

小测验

  1. 你要去图书馆,可以骑车或走路。骑车有 3 条路线,走路有 2 条路线。共有多少种走法?
    • 答案:3 + 2 = 5(因为”骑车或走路”,是”或者”)
  2. 你要去图书馆,先骑共享单车到地铁站(4 个站点可选),再坐地铁(3 条线路可选)。共有多少种走法?
    • 答案:4 × 3 = 12(因为”先…再…“,是”然后”)

四、排列数:有序的选取

从选取到排序

现在我们玩一个稍微复杂一点的游戏:

假设你有 4 本书:{A, B, C, D}。你想从中选 2 本书摆放在书架上,顺序很重要(比如《哈利波特》第一本和第二本,顺序不同就是不同的故事)。

请问有多少种摆法?

🔢 手动枚举

让我们来列举一下:

  • 第一本放 A:第二本可以是 B, C, D → 3 种
  • 第一本放 B:第二本可以是 A, C, D → 3 种
  • 第一本放 C:第二本可以是 A, B, D → 3 种
  • 第一本放 D:第二本可以是 A, B, C → 3 种

总共有 3 + 3 + 3 + 3 = 12 种。

用乘法原理:第一本书有 4 种选择,选完后第二本书有 3 种选择(不能重复)。所以 4 × 3 = 12。

形式化定义

从 n 个不同元素中,有序地选取 r 个元素(r ≤ n),排成一条”队伍”,这样的选取方式叫做排列(Permutation)。

记作 \(P_n^r\)\(A_n^r\),计算公式是:

\[P_n^r = A_n^r = n \times (n-1) \times (n-2) \times ... \times (n-r+1)\]

也可以写成阶乘的形式:

\[A_n^r = \frac{n!}{(n-r)!}\]

其中 \(n! = n \times (n-1) \times (n-2) \times ... \times 2 \times 1\),读作”n 的阶乘”。

例子

例子 1:从 5 个人中选 3 个人排成一队,有多少种排法? - \(A_5^3 = 5 \times 4 \times 3 = 60\)

例子 2:用 0-9 这 10 个数字(不能重复)可以组成多少个 3 位数? - 百位不能是 0:9 种选择(1-9) - 十位:9 种选择(0-9,除去百位用的那个) - 个位:8 种选择 - 总共:9 × 9 × 8 = 648 种


五、全排列:所有人都有位置

特殊情况:全部都要

如果说排列是从 n 个里面选 r 个,那么全排列就是从 n 个里面选 n 个——每个人都必须上场,一个都不能少。

从 n 个不同元素中,全部取出并排成顺序,叫做全排列(Complete Permutation)。

记作 \(P_n^n\)\(A_n^n\),计算公式是:

\[P_n^n = n! = n \times (n-1) \times (n-2) \times ... \times 2 \times 1\]

🏠 形象的比喻:全家福拍照

想象一家人拍全家福:爸爸、妈妈、孩子、爷爷、奶奶一共 5 个人。要把这 5 个人排成一排拍照,有多少种排法?

每个人都可能是第一个位置。选完第一个,剩下 4 个人争第二个位置;选完前两个,剩下 3 个人抢第三个位置……以此类推。

所以是:5 × 4 × 3 × 2 × 1 = 120 种!

这意味着,如果每天换一种站法,这家人可以连续 4 个月不重样(120 天 ≈ 4 个月)。

有趣的事实:阶乘的恐怖增长

  • 3! = 6
  • 5! = 120
  • 10! = 3,628,800(362 万)
  • 20! ≈ 2.4 × 10¹⁸(2.4 万亿亿)

这就是组合数学中常见的”组合爆炸”现象。理解了这一点,你就明白为什么计算机处理排列组合问题有时会”力不从心”——数字增长太快了!


六、组合数:无序的选取

顺序不重要了

现在回到选书的问题:还是从 4 本书 {A, B, C, D} 中选 2 本,但是这次顺序不重要——你选 {A, B} 和选 {B, A} 算作同一种选择。

请问有多少种选法?

🔢 手动枚举

让我们列举所有可能的组合(无序):

  • {A, B}
  • {A, C}
  • {A, D}
  • {B, C}
  • {B, D}
  • {C, D}

一共是 6 种。

对比:排列 vs 组合

排列(有序) 组合(无序)
从 4 本书选 2 本 12 种 6 种
区别 顺序重要 顺序不重要

12 ÷ 6 = 2,这个 2 是什么?恰好是 2!(2 的阶乘)。

也就是说,排列数除以 r! 就得到了组合数

形式化定义

从 n 个不同元素中,无序地选取 r 个元素(r ≤ n),这样的选取方式叫做组合(Combination)。

记作 \(C_n^r\)\(\binom{n}{r}\),计算公式是:

\[C_n^r = \binom{n}{r} = \frac{A_n^r}{r!} = \frac{n!}{r!(n-r)!}\]

🎯 记住核心关系

\[P_n^r = C_n^r \times r!\]

换句话说:

排列 = 组合 × 排序

例子

例子 1:从 5 个人中选 3 个人组成一个学习小组,顺序无关紧要,有多少种选法? - \(C_5^3 = \frac{5!}{3!2!} = \frac{120}{6 \times 2} = 10\)

例子 2:一副扑克牌(52 张),抽 5 张组成一手牌,有多少种可能? - \(C_{52}^5 = \frac{52!}{5!47!} = 2,598,960\) 种(大约 260 万种!)

例子 3:10 个篮球队要打比赛,如果每两队之间都要比赛一场,总共需要安排多少场比赛? - 每场比赛就是从 10 队中选 2 队,顺序不重要 - \(C_{10}^2 = \frac{10!}{2!8!} = 45\)


七、排列组合的关系:一张图说清楚

1
2
3
4
5
6
7
8
9
10
11
12
13
14
从 n 个元素中取 r 个:

┌─────────────┐
│ 有 序 │ → 排列 Pₙʳ 或 Aₙʳ
│ (排队) │
│ n × (n-1) × ... × (n-r+1) │
└─────────────┘
↓ 除以 r!

┌─────────────┐
│ 无 序 │ → 组合 Cₙʳ 或 (ₙʳ)
│ (组队) │
│ n! / (r!(n-r)!) │
└─────────────┘

一句话总结:先组合再排序(或者反过来),就是排列。


八、实战应用:离散型随机变量

为什么学排列组合?

现在你可能会问:学这些”数数”的方法,到底有什么用?

答案之一是:概率论

什么是离散型随机变量?

在进入概率论之前,我们先理解一个概念:离散型随机变量

想象你在掷骰子。掷一次,可能出现 1、2、3、4、5、6 这六个结果。每个结果都有一个对应的概率(对于公平的骰子,每个都是 1/6)。

像这样”取值是有限的、可以一个一个数出来的”的变量,就叫做离散型随机变量

常见的离散型随机变量包括: - 掷骰子的点数 - 一小时内到达商场的顾客人数 - 抽奖是否中奖

📊 分布列:随机变量的”简历”

对于离散型随机变量 X,我们通常用一张”简历”来描述它——这就是分布列(Probability Distribution):

X = xᵢ x₁ x₂ x₃
P(X = xᵢ) p₁ p₂ p₃

其中 \(p_i\) 表示 X 取值为 \(x_i\) 的概率,且所有概率之和为 1。

🎲 例子:二项分布

二项分布是离散型随机变量中最常见的分布之一。什么情况下会出现二项分布?

前提条件: 1. 独立:每次实验相互独立 2. 两种结果:每次实验只有”成功”或”失败”两种结果 3. 概率不变:成功的概率 p 每次都相同

满足这三个条件的实验,叫做n 重伯努利试验

在这种试验中,“成功次数 X 服从参数为 (n, p) 的二项分布”,记作 \(X \sim B(n, p)\)

二项分布的概率计算

如果 \(X \sim B(n, p)\),那么 X = k(恰好 k 次成功)的概率是:

\[P(X = k) = C_n^k \times p^k \times (1-p)^{n-k}\]

这里出现了 \(C_n^k\)——正是我们前面学的组合数

🎯 理解公式

  • \(C_n^k\):从 n 次实验中选出 k 次”成功”的方式数
  • \(p^k\):这 k 次成功概率的乘积
  • \((1-p)^{n-k}\):其余 n-k 次失败的概率

例子:掷骰子的游戏

你掷一个公平的骰子 5 次,记”出现 6 点”为成功。问恰好出现 2 次 6 点的概率是多少?

这里:n = 5,p = 1/6,k = 2

\[P(X = 2) = C_5^2 \times \left(\frac{1}{6}\right)^2 \times \left(\frac{5}{6}\right)^3\]

\[= 10 \times \frac{1}{36} \times \frac{125}{216}\]

\[= \frac{1250}{7776} \approx 16.07\%\]

📈 例子:抽样检验

一家工厂生产零件,合格率为 95%。质检员随机抽取 10 个零件进行检查。问恰好有 8 个合格的概率是多少?

这里:n = 100.95,,p = k = 8

\[P(X = 8) = C_{10}^8 \times (0.95)^8 \times (0.05)^2\]

\[= 45 \times 0.95^8 \times 0.0025\]

\[≈ 0.275\]

也就是说,大约有 27.5% 的概率恰好抽到 8 个合格品。

🔢 例子:排列组合在概率中的其他应用

例子:抽牌问题

从一副扑克牌(52 张)中随机抽 5 张,恰好包含 2 张红桃的概率是多少?

  • 总的抽法:\(C_{52}^5\)(组合数的应用)
  • 红桃有 13 张,选 2 张:\(C_{13}^2\)
  • 其余 3 张从非红桃 39 张中选:\(C_{39}^3\)

\[P = \frac{C_{13}^2 \times C_{39}^3}{C_{52}^5}\]

例子:生日问题

一个班有 50 个人,至少有两人生日相同的概率是多少?

这个问题的计算就更加复杂了,需要用到容斥原理(我们后面会讲到),但核心还是排列组合的思想。


九、总结:组合数学的力量

我们学到了什么?

  1. 加法原理:分类相加——“或者”的问题
  2. 乘法原理:分步相乘——“然后”的问题
  3. 排列数 \(P_n^r\):有序选取,顺序重要
  4. 全排列 \(n!\):全部有序排列
  5. 组合数 \(C_n^r\):无序选取,顺序不重要
  6. 关系\(P_n^r = C_n^r \times r!\)
  7. 应用:离散型随机变量,特别是二项分布

🎨 一张图总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
计数问题

├── 加法原理:分类 → 加法

├── 乘法原理:分步 → 乘法

└── 选取问题

├── 有序(排列)Pₙʳ = n!/(n-r)!

└── 无序(组合)Cₙʳ = n!/[r!(n-r)!]

概率论应用

二项分布 P(X=k) = Cₙᵏ pᵏ (1-p)ⁿ⁻ᵏ

组合数学的魅力

组合数学看似只是”数数”,但它却是现代数学、统计学、计算机科学的重要基石。

  • 没有排列组合,就没有概率论
  • 没有概率论,就没有统计学
  • 没有统计学,数据科学就是无本之木

所以,下次当你抱怨”这个数学知识有什么用”的时候,想想组合数学吧——它可能正在某个你不经意的地方,改变着世界的运行方式。


思考题

  1. 基础题:一个公司有 5 个部门,每个部门有 8 个人。现在要选 1 个人担任CEO,1 个人担任 CFO。请问有多少种选法?

  2. 进阶题:用 1、2、3、4、5 这五个数字,可以组成多少个大于 30000 的五位数?

  3. 应用题:某彩票中奖率为 1/1000。某人买了 5 张彩票,恰好中 2 张的概率是多少?

  4. 思考题:为什么组合数 \(C_n^r\) 的公式是 \(\frac{n!}{r!(n-r)!}\)?尝试从”排列除以重复排列”的角度解释。


下期预告:当我们遇到”至少”、“至多”这类问题时,单纯的排列组合可能不够用了——这时候,容斥原理就要登场了。敬请期待!