数学(1)——排列组合
排列组合是很基础的数学内容,根据字面意思分为 排列 和 组合 ,解决排列组合有很多方法,枚举,列表,以及套公式等等。
排列组合定义
排列指的是从 \(n\) 个元素中,任取 \(m\) 个元素按照顺序进行不同的排列,有 线排列,重排列 和 圆排列 等,排列的个数叫做 排列数,用 \(\mathrm A_n^m\) 或 \(\mathrm P_n^m\) 表示。
组合是指从 \(n\) 个元素中,任取 \(m\) 个为一组的组合,组合所有的搭配个数叫做 组合数,用 \(\mathrm C_n^m\) 或 \(\displaystyle\binom{n}{m}\) 表示。
虽然也有定义,但是我们一般只考虑 \(m\leq n\) , \(n,m\in\mathbb N\) 的情况。
加法与乘法原理
- 加法原理:达到一个目标有 \(n\) 种方法,\(a_i\) 表示第 \(i\) 种方法有多少个,所以解决问题的办法共有 \(\displaystyle \sum_{i=1}^na_i\) 种。
- 乘法原理:达到一个目标需要经历 \(n\) 步,\(a_i\) 表示第 \(i\) 步有多少种方法,所以解决问题的办法共有 \(\displaystyle \prod_{i=1}^n a_i\) 种。
排列组合的一些公式
基本计算式
排列:首先基本的计算公式有
可以考虑对于一个数列,不难发现第 \(i\) 个位置有 \(n-i+1\) 个选择,以此推出上式。
组合:有
我们在排列中选出 \(m\) 人,但是由于组合不考虑排列,所以除去 \(m\) 个人的全排列,所以得出上式。
关于二项式
组合数其实又称二项式系数。
我们拿出来一个叫做杨辉三角的玩意:
这个东西奥妙太深了,我们来领悟一下。
其实我们应该知道,杨辉三角的第 \(i\) 行的数,表示的是 \((x+y)^{i-1}\) 这个式子展开后各项系数。
不信可以来举几个例子看一下:
\((x+y)^2={\color{red}1}x^2+{\color{red}2}xy+{\color{red}1}y^2\) 发现是第 \(3\) 行的三个数。
\((x+y)^3={\color{red}1}x^3+{\color{red}3}x^2y+{\color{red}3}xy^2+{\color{red}1}y^3\) 发现是第 \(4\) 行的四个数。
\(\vdots\)
继续往下列仍然会成立的。
我们还可以通过奇怪的方法来验证这个结论。
我们给 \((x+y)^{i-1}\) 这个式子带入 \(x=1,y=1\) 得到 \(2^{i-1}\)
我们在杨辉三角中验证得:
发现他又成立辣!
所以这些系数是怎么得到的呢,我们抽象化地引入组合数的概念。
如果说我们写开一个 \((x+y)^n\) 的式子观察
我们考虑每次提取一个同类项 \(x^ay^b\) ,显然 \(a+b=n\) ,那么我们单独考虑 \(x\) 的话,我们发现就是从那 \(n\) 个 \((x+y)\) 因子中提出 \(a\) 个 \(x\) ,不同的 \(x^a\) 与 \(y^b\) 相乘组成不同的 \(x^ay^b\) ,这样整个问题就成为了 \(n\) 个 \(x\) 选 \(a\) 个的组合数问题。
这样第 \(i\) 行第 \(j\) 个数可以表示为 \(\displaystyle\binom{i-1}{j-1}\)
所以杨辉三角甚至可以表示为:
于是从中可以看出一些组合数的性质
比如从杨辉三角的上下位置关系入手:
有:
可以考虑建立模型推导,或者直接暴力展开去证明这个式子。
以及对称性:
包括根据定义得出的递推式:
还有我们之前看每行的和得出来的:
还有一些通过定义和组合意义证明的式子:
- \(\displaystyle \sum_{l=0}^n\binom{l}{k}=\binom{n+1}{k+1}\)
- \(\displaystyle\binom{n}{r}\binom{r}{k}=\binom{n}{k}\binom{n-k}{r-k}\) 可以抽象出模型定义证明
- \(\displaystyle\sum_{i=1}^n\binom{n-i}{i}=\mathrm {Fib}_{n+1}\) \(\mathrm {Fib}\)是斐波拉契数列,可以通过杨辉三角模型证明
还有比较重要的 范德蒙德卷积
组合意义证明的话,就是理解为 \(n\) 和 \(m\) 个物体的两堆中选择 \(k\) 个物品。
考虑二项式定理证明。
整理一下,证毕。
范德蒙德卷积有一些推论:
- \(\displaystyle \sum_{i=1}^n\binom{n}{i}\binom{n}{i-1}=\binom{2n}{n-1}\)
证明:
根据范德蒙德卷积得:
还有:
- \(\displaystyle\sum_{i=0}^n\binom{n}{i}^2=\sum_{i=0}^n\binom{n}{i}\binom{n}{n-i}=\binom{2n}{n};\)
- \(\displaystyle\sum_{i=0}^m\binom{n}{i}\binom{m}{i}=\sum_{i=0}^m\binom{n}{i}\binom{m}{m-i}=\binom{n+m}{m};\)
我们可以考虑一个带权的二项式系数的和为:
这个应该是可以求导证明的。
进一步的,得到:
可以求导或者降幂暴力展开证明。
还有:
上式其实可以通过\(\displaystyle \binom{n}{k}=\frac{n}{k}\binom{n-1}{k-1}=\frac{n}{k}\binom{n-1}{n-k}\) 得到。
大概就是这么多。
圆排列
线排列是有起点的,圆排列考虑围成了一个环,没有所谓起点。所以不考虑不同位置的 \(m\) 个起点,圆排列\((\mathrm Q_n^m)\) 公式为:
重排列
有多重集 \(\mathbf M=\{n_1\times b_1,n_2\times b_2,\dots,n_k\times b_k \}\)
其全排列个数为 \(\displaystyle\frac{N!}{n_1!\times n_2!\times \dots\times n_k!}=\frac{N!}{\prod_{i=1}^k n_i} ,(N=\sum_{i=1}^kn_i)\)
证明,考虑对于这 \(N\) 个元素,虽然有重复,但是不考虑的话还是有全排列个数 \(N!\) ,对于任何一个重复 \(n_i\) 次的元素自身多计算了 \(n_i!\) 个排列,所以得到上式。
Reference:
- \(\text{OI Wiki}\) - 排列组合
- \(\textit{Concrete Mathematics Chapter 5}\)