一个小学生蒟蒻对简单排列组合的认知和了解
呃呃呃呃呃…可能写的有点不咋好…呃呃呃
神马是排列组合
神马是排列组合呢?我感觉我也不太清楚
排列组合是组合数学中的基础。排列就是指从给定个数的元素中取出指定个数的元素进行排序;组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。排列组合与古典概率论关系密切。
在高中初等数学中,排列组合多是利用列表、枚举等方法解题。
学习排列组合前置工作
在学习排列组合前我们要先学习两个原理
0-1.加法原理
加法原理是分类计数原理,常用于排列组合中,具体是指:做一件事情,完成它有 n n n 类方式,第一类方式有 M 1 M_1 M1 种方法,第二类方式有 M 2 M_2 M2 种方法,…… ,第 n n n 类方式有 M n M_n Mn 种方法,那么完成这件事情共有 M 1 + M 2 + … … + M n M_1+M_2+……+M_n M1+M2+……+Mn 种方法。
完成一个工程可以有 n n n 类办法, a i ( 1 ≤ i ≤ n ) a_i (1 \le i \le n) ai(1≤i≤n) 代表第 i i i 类方法的数目。那么完成这件事共有 S = a 1 + a 2 + ⋯ + a n S=a_1+a_2+ \dots + a_n S=a1+a2+⋯+an 种不同的方法。
0-2.乘法原理
完成一个工程可以有 n n n 类办法, a i ( 1 ≤ i ≤ n ) a_i (1 \le i \le n) ai(1≤i≤n) 代表第 i i i 类方法的数目。那么完成这件事共有 S = a 1 × a 2 × ⋯ × a n S=a_1 \times a_2 \times \dots \times a_n S=a1×a2×⋯×an 种不同的方法。
学习简单排列组合
排列组合分为两个,分别为:
排列数和组合数
1-1.排列数
从 n n n 个不同元素中,任取 m m m($ m \le n , , ,m$ 与 n n n 均为自然数,下同)个元素按照一定的顺序排成一列,叫做从 n n n 个不同元素中取出 m m m 个元素的一个排列;从 n n n 个不同元素中取出 m m m ( m ≤ n m \le n m≤n) 个元素的所有排列的个数,叫做从 n n n 个不同元素中取出 m m m 个元素的排列数,用符号 A n m A^m _n Anm(或者是 P n m P^m _n Pnm)表示。
对了,排列的计算公式如下:
A
n
m
=
n
(
n
−
1
)
(
n
−
2
)
…
(
n
−
m
+
1
)
=
n
!
(
n
−
m
)
!
A^m _n = n(n-1)(n-2) \dots (n-m+1) = \frac{n!}{(n-m)!}
Anm=n(n−1)(n−2)…(n−m+1)=(n−m)!n!
注:
n
!
n!
n! 表示的是
n
n
n 的阶乘, 如果
n
=
3
n = 3
n=3 那么
n
!
=
1
×
2
×
3
n! = 1 \times 2 \times 3
n!=1×2×3.
我猜你看不懂, 所以这个公式应该咋理解呢?
公式可以这样理解: n n n 个人选 m m m 个来排队 ( m ≤ n m \le n m≤n)。第一个位置可以选 n n n 个,第二位置可以选 n − 1 n-1 n−1 个,以此类推,第 m m m 个(最后一个)可以选 n − m + 1 n-m+1 n−m+1 个,得:
A n m = n ( n − 1 ) ( n − 2 ) … ( n − m + 1 ) = n ! ( n − m ) ! A^m _n = n(n-1)(n-2) \dots (n-m+1) = \frac{n!}{(n-m)!} Anm=n(n−1)(n−2)…(n−m+1)=(n−m)!n!
1-2.组合数
从 n n n 个不同元素中,任取 m ≤ n m \leq n m≤n 个元素组成一个集合,叫做从 n n n 个不同元素中取出 m m m 个元素的一个组合;从 n n n 个不同元素中取出 m ≤ n m \leq n m≤n 个元素的所有组合的个数,叫做从 n n n个不同元素中取出 m m m 个元素的组合数,用符号 ( n m ) \dbinom{n}{m} (mn) 来表示,读作「 n n n 选 m m m」。
组合数计算公式
(
n
m
)
=
A
m
n
m
!
=
n
!
m
!
(
n
−
m
)
!
\dbinom{n}{m} = \frac{A^n _m}{m!} = \frac{n!}{m!(n-m)!}
(mn)=m!Amn=m!(n−m)!n!
我还猜有人看不懂这个公式
那就理解一下
我们考虑 n n n 个人选 m m m 个出来( m ≤ n m \le n m≤n),不排队,不在乎顺序。如果在乎顺序那么就是 A n m \mathrm A_n^m Anm,如果不在乎那么就要除掉重复,那么重复了多少?同样选出来的 m m m 个人,他们还要「全排」得 m ! m! m!,所以得:
( n m ) × m ! = A n m ( n m ) = A n m m ! = n ! m ! ( n − m ) ! \begin{aligned} \dbinom{n}{m} \times m! &= \mathrm A_n^m\\ \dbinom{n}{m} &= \frac{\mathrm A_n^m}{m!} = \frac{n!}{m!(n-m)!} \end{aligned} (mn)×m!(mn)=Anm=m!Anm=m!(n−m)!n!
组合数也常用 C n m \mathrm C_n^m Cnm 表示,即 。 C n m = ( n m ) \displaystyle \mathrm C_n^m=\binom{n}{m} Cnm=(mn)现在数学界普遍采用 ( n m ) \dbinom{n}{m} (mn) 的记号而非 C n m \mathrm C_n^m Cnm 。
组合数也被称为「二项式系数」,下文二项式定理将会阐述其中的联系。
特别地,规定当 m > n m>n m>n 时, A n m = ( n m ) = 0 \mathrm A_n^m=\dbinom{n}{m}=0 Anm=(mn)=0。
1-3.插板法
插板法(Stars and bars)是用于求一类给相同元素分组的方案数的一种技巧,也可以用于求一类线性不定方程的解的组数。
1.3.1.正整数和的数目
问题一:现有 n n n 个 完全相同 的元素,要求将其分为 k k k 组,保证每组至少有一个元素,一共有多少种分法?
考虑拿 k − 1 k - 1 k−1 块板子插入到 n n n 个元素两两形成的 n − 1 n - 1 n−1 个空里面。
因为元素是完全相同的,所以答案就是 ( n − 1 k − 1 ) \dbinom{n - 1}{k - 1} (k−1n−1) 。
本质是求 x 1 + x 2 + ⋯ + x k = n x_1+x_2+\cdots+x_k=n x1+x2+⋯+xk=n 的正整数解的组数。
1.3.2.非负整数和的数目
问题二:如果问题变化一下,每组允许为空呢?
显然此时没法直接插板了,因为有可能出现很多块板子插到一个空里面的情况,非常不好计算。
我们考虑创造条件转化成有限制的问题一,先借
k
k
k 个元素过来,在这
n
+
k
n + k
n+k 个元素形成的
n
+
k
−
1
n + k - 1
n+k−1 个空里面插板,答案为
(
n
+
k
−
1
k
−
1
)
=
(
n
+
k
−
1
n
)
\binom{n + k - 1}{k - 1} = \binom{n + k - 1}{n}
(k−1n+k−1)=(nn+k−1)
虽然不是直接求的原问题,但这个式子就是原问题的答案,可以这么理解:
开头我们借来了 k k k 个元素,用于保证每组至少有一个元素,插完板之后再把这 k k k 个借来的元素从 组 k k k 里面拿走。因为元素是相同的,所以转化过的情况和转化前的情况可以一一对应,答案也就是相等的。
由此可以推导出插板法的公式: ( n + k − 1 n ) \dbinom{n + k - 1}{n} (nn+k−1)。
本质是求 x 1 + x 2 + ⋯ + x k = n x_1+x_2+\cdots+x_k=n x1+x2+⋯+xk=n 的非负整数解的组数(即要求 x i ≥ 0 x_i \ge 0 xi≥0)。
1.3.3.不同下界整数和的数目
问题三:如果再扩展一步,要求对于第 i i i 组,至少要分到 a i , ∑ a i ≤ n a_i,\sum a_i \le n ai,∑ai≤n 个元素呢?
本质是求 x 1 + x 2 + ⋯ + x k = n x_1+x_2+\cdots+x_k=n x1+x2+⋯+xk=n 的解的数目,其中 。 x i ≥ a i x_i \ge a_i xi≥ai
类比无限制的情况,我们借
∑
a
i
\sum a_i
∑ai 个元素过来,保证第
i
i
i 组至少能分到
a
i
a_i
ai个。也就是令
x
i
′
=
x
i
−
a
i
x_i^{\prime}=x_i-a_i
xi′=xi−ai
得到新方程:
(
x
1
′
+
a
1
)
+
(
x
2
′
+
a
2
)
+
⋯
+
(
x
k
′
+
a
k
)
=
n
x
1
′
+
x
2
′
+
⋯
+
x
k
′
=
n
−
a
1
−
a
2
−
⋯
−
a
k
x
1
′
+
x
2
′
+
⋯
+
x
k
′
=
n
−
∑
a
i
\begin{aligned} (x_1^{\prime}+a_1)+(x_2^{\prime}+a_2)+\cdots+(x_k^{\prime}+a_k)&=n\\ x_1^{\prime}+x_2^{\prime}+\cdots+x_k^{\prime}&=n-a_1-a_2-\cdots-a_k\\ x_1^{\prime}+x_2^{\prime}+\cdots+x_k^{\prime}&=n-\sum a_i \end{aligned}
(x1′+a1)+(x2′+a2)+⋯+(xk′+ak)x1′+x2′+⋯+xk′x1′+x2′+⋯+xk′=n=n−a1−a2−⋯−ak=n−∑ai
其中
x
i
′
≥
0
x_i^{\prime}\ge 0
xi′≥0
然后问题三就转化成了问题二,直接用插板法公式得到答案为
(
n
−
∑
a
i
+
k
−
1
n
−
∑
a
i
)
\binom{n - \sum a_i + k - 1}{n - \sum a_i}
(n−∑ain−∑ai+k−1)
1.3.4.不相邻的排列
1 ∼ n 1 \sim n 1∼n 这 n n n 个自然数中选 k k k 个,这 k k k 个数中任何两个数都不相邻的组合有 ( n − k + 1 k ) \dbinom {n-k+1}{k} (kn−k+1) 种。
1.4.二项式定理
在进入排列组合进阶篇之前,我们先介绍一个与组合数密切相关的定理——二项式定理。
二项式定理阐明了一个展开式的系数:
(
a
+
b
)
n
=
∑
i
=
0
n
(
n
i
)
a
n
−
i
b
i
(a+b)^n=\sum_{i=0}^n\binom{n}{i}a^{n-i}b^i
(a+b)n=i=0∑n(in)an−ibi
证明可以采用数学归纳法,利用 ( n k ) + ( n k − 1 ) = ( n + 1 k ) \dbinom{n}{k}+\dbinom{n}{k-1}=\dbinom{n+1}{k} (kn)+(k−1n)=(kn+1) 做归纳。
二项式定理也可以很容易扩展为多项式的形式:
设 n n n 为正整数, x i x_i xi 为实数,
满足的非负整数解 ( x 1 + x 2 + ⋯ + x t ) n = ∑ 满足 n 1 + ⋯ + n t = n 的非负整数解 ( n n 1 , n 2 , ⋯ , n t ) x 1 n 1 x 2 n 2 ⋯ x t n t (x_1 + x_2 + \cdots + x_t)^n = \sum_{满足 n_1 + \cdots + n_t=n 的非负整数解} \binom{n}{n_1,n_2,\cdots,n_t} x_1^{n_1}x_2^{n_2}\cdots x_t^{n_t} (x1+x2+⋯+xt)n=∑满足n1+⋯+nt=n的非负整数解(n1,n2,⋯,ntn)x1n1x2n2⋯xtnt
其中的 ( n n 1 , n 2 , ⋯ , n t ) \dbinom{n}{n_1,n_2,\cdots,n_t} (n1,n2,⋯,ntn) 是多项式系数,它的性质也很相似:
∑ ( n n 1 , n 2 , ⋯ , n t ) = t n \sum{\binom{n}{n_1,n_2,\cdots,n_t}} = t^n ∑(n1,n2,⋯,ntn)=tn
The End
鸣谢:
OI Wiki:排列组合 - OI Wiki