组合数学
排列组合是组合数学中的基础。排列就是指从给定个数的元素中取出指定个数的元素进行排序;组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。排列组合的中心问题是研究给定要求的排列和组合可能出现的情况总数。排列组合与古典概率论关系密切。
在高中初等数学中,排列组合多是利用列表、枚举等方法解题。
加法& 乘法原理
加法原理
完成一个工程可以有 n n n 类办法, a i ( 1 ≤ i ≤ n ) a_i(1\leq i\leq n) ai(1≤i≤n)代表第 i i i类方法的数目。那么完成这件事共有 S = a 1 + a 2 + ⋯ + a n S=a_{1}+a_{2}+\cdots +a_{n} S=a1+a2+⋯+an种不同的方法。
乘法原理
完成一个工程需要分 n n n个步骤, a i ( 1 ≤ i ≤ n ) a_i(1\leq i\leq n) ai(1≤i≤n)代表第 i i i个步骤的不同方法数目。那么完成这件事共有 S = a 1 × a 2 × ⋯ × a n S=a_{1}\times a_{2}\times \cdots\times a_{n} S=a1×a2×⋯×an种不同的方法。
排列与组合基础
排列数
从
n
n
n个不同元素中,任取
m
m
m(
m
≤
n
,
m
m\leq n,\; m
m≤n,m与
n
n
n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从
n
n
n个不同元素中取出𝑚 个元素的一个排列;从
n
n
n个不同元素中取出
m
(
m
≤
n
)
m(m\leq n)
m(m≤n)个元素的所有排列的个数,叫做从
n
n
n个不同元素中取出
m
m
m个元素的排列数,用符号
A
n
m
A_n^m
Anm(或者是
P
n
m
P_n^m
Pnm)表示。
排列的计算公式如下:
A
n
m
=
n
(
n
−
1
)
(
n
−
2
)
⋯
(
n
−
m
+
1
)
=
n
!
(
n
−
m
)
!
A_n^m=n(n-1)(n-2)\cdots (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的阶乘,即
6
!
=
1
×
2
×
3
×
4
×
5
×
6
6!=1\times 2\times 3\times 4\times 5\times 6
6!=1×2×3×4×5×6。
公式可以这样理解:
n
n
n个人选
m
m
m个来排队
(
n
≤
m
)
(n\leq m)
(n≤m)。第一个位置可以选
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_n^m=n(n-1)(n-2)\cdots (n-m+1)=\frac{n!}{(n-m)!}
Anm=n(n−1)(n−2)⋯(n−m+1)=(n−m)!n!
全排列:𝑛 个人全部来排队,队长为𝑛。第一个位置可以选𝑛 个,第二位置可以选𝑛 − 1 个,以此类推得:
A
n
n
=
n
(
n
−
1
)
(
n
−
2
)
⋯
3
×
2
×
1
=
n
!
A_n^n=n(n-1)(n-2)\cdots 3\times 2\times 1=n!
Ann=n(n−1)(n−2)⋯3×2×1=n!
全排列是排列数的一个特殊情况。
组合数
从
n
n
n个不同元素中,任取
m
(
m
≤
n
)
m(m\leq n)
m(m≤n) 个元素组成一个集合,叫做从
n
n
n个不同元素中取出
m
m
m个元素的一个组合;从
n
n
n个不同元素中取出
m
(
m
≤
n
)
m(m\leq n)
m(m≤n) 个元素的所有组合的个数,叫做从
n
n
n个不同元素中取出
m
m
m个元素的组合数。用符号
C
n
m
C_n^m
Cnm来表示。
组合数计算公式:
C
n
m
=
A
n
m
m
!
=
n
!
m
!
(
n
−
m
)
!
C_n^m = \frac{A_n^m}{m!} = \frac{n!}{m!(n-m)!}
Cnm=m!Anm=m!(n−m)!n!
如何理解上述公式?我们考虑
n
n
n个人
m
(
m
≤
n
)
m(m\leq n)
m(m≤n) 个出来,不排队,不在乎顺序
C
n
m
C_n^m
Cnm 。如果在乎排列那么就是
A
n
m
A_n^m
Anm如果不在乎那么就要除掉重复,那么重复了多少?同样选出的来的
m
m
m个人,他们还要“全排”得
A
n
m
A_n^m
Anm,所以得:
C
n
m
×
m
!
=
A
n
m
C
n
m
=
A
n
m
m
!
=
n
!
m
!
(
n
−
m
)
!
C_n^m\times m!=A_n^m C_n^m=\frac{A_n^m}{m!}=\frac{n!}{m!(n-m)!}
Cnm×m!=AnmCnm=m!Anm=m!(n−m)!n!
组合数也常用
(
n
m
)
\begin{pmatrix} n \\m\end{pmatrix}
(nm)表示,读作
⌈
n
\lceil n
⌈n选
m
⌋
m\rfloor
m⌋,即
C
n
m
=
(
n
m
)
C_n^m=\begin{pmatrix} n \\m\end{pmatrix}
Cnm=(nm)。实际上,后者表意清晰明了,美观简洁,因此现在数学界普遍采用
(
n
m
)
\begin{pmatrix} n \\ m\end{pmatrix}
(nm)的记号而非
C
n
m
C_n^m
Cnm。
组合数也被称为「二项式系数」,下文二项式定理将会阐述其中的联系。特别地,规定当 m > n m>n m>n时, A n m = C n m = 0 A_n^m=C_n^m=0 Anm=Cnm=0。
二项式定理
在进入排列组合进阶篇之前,我们先介绍一个与组合数密切相关的定理——二项式定理。
二项式定理阐明了一个展开式的系数:
(
a
+
b
)
n
=
∑
i
=
0
n
(
n
i
)
a
n
−
i
b
i
(a+b)^{n}=\sum_{i=0}^{n}{\begin{pmatrix} n\\i\end{pmatrix}a^{n-i}b^{i}}
(a+b)n=i=0∑n(ni)an−ibi
证明可以采用数学归纳法,利用
(
n
k
)
+
(
n
k
−
1
)
=
(
n
+
1
k
)
\begin{pmatrix} n\\k\end{pmatrix}+\begin{pmatrix} n\\k-1\end{pmatrix}=\begin{pmatrix} n+1\\k\end{pmatrix}
(nk)+(nk−1)=(n+1k)做归纳。
二项式定理也可以很容易扩展为多项式的形式:
设
n
n
n为正整数,
x
i
x_i
xi为实数,
(
x
1
+
x
2
+
x
3
+
⋯
+
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+x_3+\cdots +x_t)^n=\sum_{n_1+\cdots +n_t=n}{\begin{pmatrix}n\\n_1n_2\cdots n_t\end{pmatrix}x_1^{n_1}x_2^{n_2}\dots x_t^{n_t}}
(x1+x2+x3+⋯+xt)n=n1+⋯+nt=n∑(nn1n2⋯nt)x1n1x2n2…xtnt
其中的
(
n
n
1
,
n
2
,
⋯
,
n
t
)
\begin{pmatrix}n\\n_1,n_2,\cdots,n_t\end{pmatrix}
(nn1,n2,⋯,nt)是多项式系数,它的性质也很相似:
∑
(
n
n
1
n
2
⋯
n
t
)
=
t
n
\sum{\begin{pmatrix}n\\n_1n_2\cdots n_t\end{pmatrix}=t^n}
∑(nn1n2⋯nt)=tn
本文是组合数学的入门文章,下一节将会讲述进阶的组合数学
下一篇:组合数学(2)