[数学基础]组合闲谈 - 1 - 基本计数
#0.0 写在前面
这一篇说是笔者的学习笔记,其实只是笔者瞎侃。
#1.0 理论基础
基本计数最最最基础的便是 加法原理 与 乘法原理,分别对应不同的情形(选两个球与选一个球)与独立的步骤(选两个球时第一个选某个球,第二个选某个球),各位应该都很熟悉,这里不多讲。
那么,让我们从最基础的讲起:排列(permutation) 和 组合(combination)。
#1.1 排列数
#1.1.1 一般的排列
排列数 即
我们将 \(\{a_1,a_2,a_3,\cdots,a_n\}\) 中选出 \(n\) 个数进行排列的方法中的一种叫做他的一个 \(n\) - 排列,显然,这样的排列共有 \(n!\) 个。
为什么?
这么简单的问题还要问为什么?!依次考虑一个排列的每一个位置,第一个位置显然有 \(n\) 种选法,下一步看第二个位置,因为第一个位置已经确定了一个元素,那么他在第二个位置显然不能选,故第二个位置有 \((n-1)\) 种选法,而且这样选第一个位置与选第二个位置是 独立的步骤,故应用乘法原理;以此类推,总共应当有 \(n(n-1)(n-2)\cdots1=n!\) 种选法。
那么,仿照上面的过程,不难知道,\(r\) - 排列便是从 \(\{a_1,a_2,a_3,\cdots,a_n\}\) 中选出 \(r\) 个数进行排列的方法中的一种,相应的,方案总共应有 \(n(n-1)\cdots(n-(r-1))=\dfrac{n!}{(n-r)!}\) 种,也正是排列数 \(P(n,r)\)(似乎也有写成 \(P_n^r\) 或 \(A(n,r)\) 或 \(A_n^r\) 的,不过这并不重要)。
#1.1.2 环排列
上面的排法是排成一排,那么如果是排成一圈呢?
emm...先让我们将他砍断,变成一排,那么就可以兴高采烈的用上面的 \(P(n,r)\) 了,但这是正确答案吗?
显然不是。一个钟表旋转 \(60^{\circ}\)(不必多想是顺时针还是逆时针),他表盘上的 \(12\) 个数字的相对位置是没有改变的;但是如果我们选取不同的位置断开,会得到截然不同的排列。比如我们在 \(1\) 和 \(2\) 之间断开,顺时针看去会得到 \(2,3,4,5,6,7,8,9,10,11,12,1\),如果我们从 \(2\) 和 \(3\) 之间断开,顺时针看去会得到 \(3,4,5,6,7,8,9,10,11,12,1,2\),这被视为两种不同的排列,但在环上,他们是相同的。
于是,如果我们每次选取一个数字作为链的头,我们一共可以得到 \(12\) 个排列,他们各自是不同的,但连成环便是相同的,也就是说,每一个 \(r\) 排列都被算了 \(r\) 次。
所以对于 \(\{a_1,a_2,\cdots,a_n\}\),我们从中选出 \(r\) 个围成一圈,总共有 \(\dfrac{1}{r}\cdot P(n,r)=\dfrac{1}{r}\cdot\dfrac{n!}{(n-r)!}.\)
#1.2 组合数
#1.2.1 多重选取数
上面的候选集合都是不能有重复元素的,那我们将有重复元素的集合叫做 多重集,记作
或
其中 \(k_i\ (1\leq i\leq n)\) 表示每个元素的重数。
那么从一个有 \(k\) 种,共 \(n\) 个元素的多重集中选取 \(n\) 个元素组成的排列还是 \(n!\) 吗?
显然不是。因为每种元素中的每一个是相同的,比如 \(A_1,B,A_2\) 与 \(A_2,B,A_1\) 是相同的(下标只是让你看清楚我把两个 \(A\) 交换了位置),所以, 我们对每一个排列的每个元素都算了 \(r_k!\) 次,所以答案应当为 \(\dfrac{n!}{r_1!r_2!\cdots r_k!}\) 次,记作
这便是 多重选取数(多重组合数).
#1.2.2 真正的组合数
组合数 即
他的意义是在一个 \(n\) 个互异元素的集合中选出 \(r\) 个的方法数。上式也很好理解,对于每一种 \(r\) 个元素的选取方法都可以组成 \(r!\) 个排列(也有将组合数 \(\tbinom{n}{m}\) 记作 \(C^m_n\) 的)。
#1.3 组合数?不,是二项式系数
我们有 二项式定理
上式正确性显然。
我们先来将等式的左边展开,得到
因为一共只有 \(n\) 个式子相乘,每个式子中要么选 \(x\) 要么选 \(y\),所以对于上式乘积的每一项 \(x^ib^j\) 都必然有\(i+j=n\),就相当于从 \(n\) 个式子中有 \(i\) 个选 \(x\),剩下的 \(n-i\) 个选 \(y\);再考虑每一项前面的系数,决定这个系数的显然是一共有多少种方法从 \(n\) 个 \(x\) 中选出 \(i\) 个 \(x\),这正符合组合数的定义,故每一项前的的系数正为 \(\tbinom{n}{i}\)。而 \(x\) 的指数的范围显然是 \([0,n]\),所以便有
因而,我们又将组合数称为 二项式系数。
而我们在小学二年级就知道,这样的二项式的每项前的系数与 杨辉三角 相匹配。
#1.4 Tips
不论是对排列数 \(P(n,m)\) 还是二项式系数 \(\dbinom{n}{m}\),若 \(n<m\),我们默认他们的值为 \(0\),因为这样的选取方案(排列方案)根本不存在。
#2.0 十二重计数法
完整的十二重计数法涉及到第二类 Stirling 数、分拆数等超出本文讨论范围的内容,这里只会讲解与本文内容联系较密切的部分。
#2.1 前置知识
这里,我们为了方便叙述,需要引入 二元关系 与 映射 的概念:
设 \(f\) 是从 \(A\) 到 \(B\) 的一个二元关系. 若 \(f\) 满足 \(\left|f(a)\right|=1,\ \forall\ a\in A\),则称 \(f\) 为从 \(A\) 到 \(B\) 的一个映射. 若对任意的 \(a_1,a_2\in A,a_1\ne a_2\),有 \(f(a_1)\ne f(a_2)\),则称 \(f\) 为 单射;若对于任意 \(b\in B\),都有 \(f^{-1}(b)\ne\varnothing\)(即 对于任意的 \(b\in B\),总存在 \(a\in A\) 使得 \(f(a)=b\)),则称 \(f\) 为 满射;若 \(f\) 既是满射又是单射,那么称 \(f\) 为 双射。
#2.2 正题
好的,看完上面的概念,让我们进入正题:
设集合 \(A\) 中有 \(n\) 个元素, 集合 \(B\) 中有 \(m\) 个元素,有多少个从 \(A\) 到 \(B\) 的映射 \(f:A\to B\)?
根据 \(A,B\) 的元素是否可以区分以及 \(f\) 为单射,满射或不加限制,共有十二种情况,如下表:
集合 \(A\) 中的元素(个数为 \(n\)) | 集合 \(B\) 中的元素(个数为 \(m\)) | 映射 \(f\) | \(f\) 的个数 |
---|---|---|---|
各自不同 | 各自不同 | 不加限制 | \(m^n\) |
各自不同 | 各自不同 | 单射 | \(m^{\underline{n}}\) |
各自不同 | 各自不同 | 满射 | \(m!S(n,m)\) |
各自不同 | 全部相同 | 不加限制 | \(\sum\limits_{i=1}^mS(n,i)\) |
各自不同 | 全部相同 | 单射 | \(\delta(n\leq m)\) |
各自不同 | 全部相同 | 满射 | \(S(n,m)\) |
全部相同 | 各自不同 | 不加限制 | \(\dbinom{n+m-1}{n}\) |
全部相同 | 各自不同 | 单射 | \(\dbinom{m}{n}\) |
全部相同 | 各自不同 | 满射 | \(\dbinom{n-1}{m-1}\) |
全部相同 | 全部相同 | 不加限制 | \(\sum\limits_{i=1}^mp_i(n)\) |
全部相同 | 全部相同 | 单射 | \(\delta(n\leq m)\) |
全部相同 | 全部相同 | 满射 | \(p_m(n)\) |
上表中,\(m^{\underline{n}}\) 表示 \(m(m-1)\cdots(m-n+1)\),\(S(n,i)\) 表示第二类 \(Stirling\) 数,\(p_i(n)\) 表示分拆数,而
#2.3 部分解释
- \(A\) 中各自不同,\(B\) 中各自不同,\(f\) 无限制.
这个问题等价于 “有 \(n\) 个不同的苹果,将他们放入 \(m\) 个不同的筐中,每个筐中苹果数没有限制,有多少种放法?”
依次考虑每个苹果,因为放法没有限制,所以每个苹果有 \(m\) 种放法,那么根据乘法原理,\(n\) 个苹果便有 \(m^n\) 种放法.
- \(A\) 中各自不同,\(B\) 中各自不同,\(f\) 为单射.
这个问题等价于 “有 \(n\) 个不同的苹果,将他们放入 \(m\) 个不同的筐中,每个筐中苹果最多有一个,有多少种放法?”
还是依次考虑每个苹果,第一个苹果有 \(m\) 中放法,因为有一个筐中有了第一个苹果,所以第二个苹果有 \(m-1\) 种放法,同理第三个苹果有 \(m-2\) 种放法……第 \(n\) 个苹果便有 \(m-n+1\) 种放法,以上放每一个苹果都是一个独立的步骤,所以应用乘法原理,共有 \(m(m-1)\cdots(m-n+1)=m^{\underline{n}}\) 种放法.
- \(A\) 中各自不同,\(B\) 中全部相同,\(f\) 为单射.
这个问题等价于 “将 \(n\) 个不同的球,放入 \(m\) 个相同的筐中,每个筐中最多有一个球,有多少种放法?”
首先要理解这里的 “相同” 是什么意思:将球 \(a\) 放入筐 \(A\) 与将 \(a\) 放入 \(B\) 是同一种情况(我们将 \(A\) 与 \(B\) 看成完全相同的)。
那么,假如我们能够将这 \(n\) 个球放入这 \(m\) 个相同的筐里,前提必然是要 \(n\leq m\),否则必然至少有一个筐内的球的数量大于一(抽屉原理),这样就不满足了我们的要求,所以当 \(n>m\) 时,方案数为 \(0\);那么当 \(n\leq m\) 时,因为筐都是相同的,所以不论我们怎么放,都是同一种放法,故答案为
- \(A\) 中全部相同,\(B\) 中各自不同,\(f\) 不加限制.
这个问题等价于 "求方程 \(x_1+x_2+\cdots+x_m=n\) 的非负整数解的个数",那么这个转化后的问题又等价于 “由 \(n\) 个 '\(|\)' 与 \(m-1\) 个 '\(+\)' 所形成的序列个数",而这个问题又等价于 "有 \(n+m-1\) 个位置,从中选出 \(m-1\) 个位置给 '\(+\)',剩下的给 '\(|\)' 的方法数",这样一来,这个问题的答案显然就是 \(\dbinom{n+m-1}{m-1}=\dbinom{n+m-1}{n}.\)
- \(A\) 中全部相同,\(B\) 中各自不同,\(f\) 为单射.
这个问题等价于 "在 \(m\) 个不同的球中选取 \(n\) 个有几种选法?"
考虑是怎么等价的:"\(m\) 个不同的球" 与 \(B\) 的要求对应;"选取 \(n\) 个" 每一个选取的意义是相同的,与 \(A\) 的要求相对应;而 "一次选取只选一个" 本身的意义也就保证了 \(f\) 为单射。
答案一目了然,为 \(\dbinom{m}{n}.\)
- \(A\) 中全部相同,\(B\) 中各自不同,\(f\) 为满射.
这个问题等价于 "求方程 \(x_1+x_2+\cdots+x_m=n\) 的正整数解的个数",而这个问题又等价于 “在 \(n\) 个 '\(|\)' 形成的 \(n-1\) 个空隙中插入 \(m-1\) 个 '\(+\)' 的方法数”,这也便是 \(\dbinom{n-1}{m-1}.\)
- \(A\) 中全部相同,\(B\) 中全部相同,\(f\) 为单射.
这种情况与 情况 3. 基本相同。
#2.4 Tips
十二重计数法是计数组合问题的十二种基本模型,在理解的基础上能够记住会给做题带来极大的便利。
#3.0 组合恒等式
又到了爷最爱的颓柿子时间!
#3.1 几个开胃小菜
证明:考虑组合意义即可。
证明:
证明:由 \((2)\) 左右同乘 \(k\) 立即得到.
证明:
清凉爽口的小菜结束了,下面来看几道硬菜。
#3.2 Vandermonde 恒等式
设 \(n,m\geq0\),则
证明:
比较等式 \((x+y)^{m+n}\) 与 \((x+y)^m(x+y)^n\) 两边 \(x^k\) 前的系数。
\((x+y)^{m+n}\) 中 \(x^k\) 的系数由二项式定理立即得到,为 \(\dbinom{m+n}{k}.\)
再来看 \((x+y)^m(x+y)^n\) 中 \(x^k\) 前的系数。考虑 \(k\) 的组成,
也就是由 \((x+y)^m\) 提供 \(x^i\),由 \((x+y)^n\) 提供 \(x^{k-i}\),此时,\(x^i\) 前的系数为 \(\tbinom{m}{i}\),\(x^{k-i}\) 的系数为 \(\tbinom{n}{k-i}\),故\(x^k\) 的系数即为 \(\tbinom{m}{i}\tbinom{n}{k-i}\),再考虑 \((x+y)^m\) 提供的 \(x^i\) 的指数 \(i\) 的范围为 \([0,k]\),这都是不同的情况,应用加法原理得
于是有
推论 - Pascal 恒等式
在 二项式定理 一节中我们提到,二项式系数似乎与杨辉三角有着奇妙的联系,而我们又知道,杨辉三角的每一个数等于其上方和左方的数的和,二项式定理也满足这一点吗?是的。小编也很惊讶,但事实就是这样。
在 \(\text{Vandermonde}\) 恒等式中令 \(m=1\) 得到
于是我们便得到了二项式系数的递归(递推)方程。
#3.3 朱世杰恒等式
证明:
考虑 \((x+1)^{n+m+1}\) 中项 \(x^{m+1}\) 的系数.
柿子左边的项 \(x^{m+1}\) 的系数显然是 \(\tbinom{n+m+1}{m+1}\),再来看右边。
我们考虑对第一个 \(x\) 选取的位置进行分类,第一个 \(x\) 最小在第一个柿子里取,最大在第 \(n+1\) 个柿子里取,剩下 \(m\) 个 \(x\) 在其后面的几项中取,故其系数应为:
那么,等式两边 \(x^{m+1}\)的系数应当是相等的,所以有
#3.4 Lucas 定理
设 \(p\) 是一个质数,\(n\) 用 \(p\) 进制表示为 \(a_0+a_1p^1+a_2p^2+\cdots+a_kp^k\),\(m\) 用 \(p\) 进制表示为 \(b_0+b_1p^1+b_2p^2+\cdots+b_kp^k\),那么有:
证明:
易知,当 \(1\leq j \leq p^i-1,i\geq1\) 时,\(\tbinom{p^i}{j}\) 是 \(p\) 的倍数,故
所以有
上式左端 \(x^m\) 的系数为 \(\tbinom{n}{m}\),考虑到 \(m\) 表示成 \(p\) 进制的唯一性,\(m=b_0+b_1p^1+\cdots+b_kp^k\),故上式右端 \(x^m\) 的系数应为
故有
\(b_i\) 有可能大于 \(a_i\),那么此时式 \((8)\) 仍成立吗?
仍成立。
证明:
根据组合数的定义,我们知道,当 \(a_i<b_i\) 时,\(\tbinom{a_i}{b_i}=0\),所以式 \((8)\) 右端的柿子等于零;再来看左边的柿子:
所以得
不难发现,在式 \((9)\) 右边出现项 \(x^{b_ip^i}\) 是有可能的,我们将 \([1+x^{p^i}+\sum\limits_{j_i=1}^{p^i-1}\dbinom{p^i}{j_i}x^{j_i}]^{a_i}\) 展开,得到:
显然有多种选取方法可以得到 \(x^{b_ip^i}\),比如在第一个柿子中选 \(x^{p^i}\),在第二个式子中选 \(x^{b_i}\),其他的柿子都选 \(1\),最终的结果即为 \(x^{b_ip^i}\)。但注意到,无论怎样选取,必然有至少一个因子是从 \(\sum_{j_i=1}^{p^i-1}\tbinom{p^i}{j_i}x^{j_i}\) 中选取得到的,所以项 \(x^{b_ip^i}\) 前的系数至少有一个为 \(\tbinom{p^i}{j_i},1\leq j_i\leq p^i-1\),而我们知道 \(p|\tbinom{p^i}{j_i},1\leq j_i\leq p^i-1\),故上式在模 \(p\) 意义下时,设 \(x^{b_ip^i}\) 的系数为 \(\alpha\),必然有
所以 \(x^{b_ip^i}\) 的系数在模 \(p\) 意义下为 \(0.\)
那么,在由相乘得到 \(x^m=x^{b_0+b_1p^1+\cdots+b_kp^k}\) 时,自然项 \(x^m\) 的系数也为 \(0\),所以,式 \((9)\) 左边项 \(x^m\) 的系数在模 \(p\) 意义下为 \(0\),而单独分析式 \((9)\) 左端柿子中 \(x^m\) 的系数应为 \(\tbinom{n}{m}\),所以可知
即得式 \((8)\) 在 \(\exists a_i<b_i\) 时仍成立。
#4.0 解决一些简单问题
下面介绍的方法并不会给出多么严谨的定义(
因为都是我自己总结的),那么理解一个方法最有效的方法也便是——结合例题!
好的,你已经完成了组合数学最基础知识的学习,下面将介绍一些简单的方法,让我们来试着解决一些简单问题。
#4.1 转化!
没有任何的内涵,“转化” 指的就是将一个不好思考的问题转化为另一个与它具有同样组合意义的、容易解决的问题,在上面 十二重计数法 中得到了很好的展示,我们将原本难以理解的、抽象的映射关系,变成了容易思考的实际问题,这便是最基础的转化法。
当然,转化法也并没有什么特定的格式,只能跟着感觉走。
#4.2 插空!
我们在 十二重计数法 - 部分解释 中的 6. 就使用了插空法。
1. \(26\) 个英文字母的全排列中,使得任两个元音字母(\(A,E,I,O,U\))都不相邻的排列有多少个?
先考虑 \(5\) 个元音字母的全排列,共 \(5!\) 种,剩下的 \(21\) 个字母全排列有 \(21!\) 种,在 \(21\) 个字母形成的 \(22\) 个空隙(头尾的空隙也算)中选五个插入这五个元音字母,故总共有 \(5!21!\tbinom{22}{5}\) 个。
2. \(5\) 位绅士与 \(7\) 位女士坐成一排,则任两绅士都不相邻的坐法有几种?
先考虑绅士,共有 \(5!\) 种排法,女士有 \(7!\) 种排法,选择女士形成的 \(8\) 个空隙中的 \(5\) 个插入绅士,于是答案便为 \(7!5!\tbinom85.\)
由上面的两个例子不难看出,插空法特别适用于 “xxx 与 xxx 不相邻” 的问题。
#4.3 捆绑!
???
1. \(6\) 对夫妻排成一排,要求每对夫妻必须相邻,有多少种排法?
将每一对夫妻绑定,\(6\) 对夫妻的排列数为 \(6!\),而每一对夫妻内部不同的排法有 \(2!\) 种,故答案为 \(6!\cdot 2^6.\)
捆绑法特别适用于 “xxx 与 xxx 必须相邻” 的问题。
参考文献
[1] 冯荣权, 宋春伟. 组合数学. 北京: 北京大学出版社, 2015.
[2] Ronald L. Graham, Donald E. Knuth, Oren Patashnik 著. 张明尧, 张凡 译. 具体数学:计算机科学基础:第二版. 北京: 人民邮电出版社, 2013.