一、排列组合基础
1.简介
排列组合是组合数学的基础内容,学好基础的排列组合部分才能在后续更高级的算法种熟练应用。
排列:指从给定个数的元素中取出指定个数的元素进行排序。
组合:指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。
排列组合的核心问题是研究给定要求的排列或组合可能出现的情况总数。排列组合一般与古典概型关系密切。在高中数学中,排列组合多是利用列表、枚举等方法解题,并不涉及很复杂的组合数学知识。
2.加法原理与乘法原理
- 加法原理:完成一个任务有 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+...+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...\times a_n S=a1×a2×...×an 种不同的方法。
二、排列数与组合数
1.排列数
设 m m m 与 n n 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 个元素的排列数,用符号 A n m \mathrm A_n^m Anm(或者是 P n m \mathrm P_n^m Pnm)表示。
排列的计算公式如下:
A
n
m
=
n
(
n
−
1
)
(
n
−
2
)
⋯
(
n
−
m
+
1
)
=
n
!
(
n
−
m
)
!
\mathrm 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 个来排队 ( m ≤ n ) (m\leq n) (m≤n)。第一个位置可以选 n n n 个,第二位置可以选 n − 1 n-1 n−1 个,以此类推,第 m m m 个(最后一个)可以选 n − m + 1 n-m+1 n−m+1 个。
全排列:
n
n
n 个人全部来排队,队长为
n
n
n。第一个位置可以选
n
n
n 个,第二位置可以选
n
−
1
n-1
n−1 个,以此类推得:
A
n
n
=
n
(
n
−
1
)
(
n
−
2
)
⋯
3
×
2
×
1
=
n
!
\mathrm 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!
2.组合数
设 m m m 与 n n 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 个元素的组合数,用符号 ( n m ) \dbinom{n}{m} (mn)(或者是 C n m \mathrm C_n^m Cnm)表示。
排列的计算公式如下:
(
n
m
)
=
C
n
m
=
A
n
m
m
!
=
n
!
m
!
(
n
−
m
)
!
\dbinom{n}{m}=\mathrm C_n^m = \frac{\mathrm A_n^m}{m!} = \frac{n!}{m!(n - m)!}
(mn)=Cnm=m!Anm=m!(n−m)!n!
公式可以这样理解:
n
n
n 个人选
m
m
m 个,不考虑顺序。因为考虑顺序就是
A
n
m
\mathrm A_n^m
Anm,现在考虑在不考虑顺序的情况下有多少重复的。因为
m
m
m 个人有
m
!
m!
m! 种排列,即全排列,所以可以得到上面得公式。
组合数也被称为二项式系数,后面将会详细介绍。相较于排列数,组合数的应用更广泛,相关的定理和公式更多,所以需要重点关注。
特别地,规定当 m > n m>n m>n 时, A n m = ( n m ) = 0 \mathrm A_n^m=\dbinom{n}{m}=0 Anm=(mn)=0。
三、常用公式
∑ i = 0 n ( n i ) = 2 n ∑ i = 0 n ( − 1 ) i ( n i ) = 0 ∑ i = 0 n 2 i ( n i ) = 3 n \sum_{i=0}^{n}\dbinom{n}{i}=2^n\\ \sum_{i=0}^{n}(-1)^i\dbinom{n}{i}=0\\ \sum_{i=0}^{n}2^i\dbinom{n}{i}=3^n\\ i=0∑n(in)=2ni=0∑n(−1)i(in)=0i=0∑n2i(in)=3n
证明:
- 对于①式,其含义为计算从 n n n 个数中选择 0 , 1 , . . . , n 0,1,...,n 0,1,...,n 个数的总方案数,也就是从 n n n 个数中选择任意个数的方案数。从另一个角度看,每个数有选和不选两个方案,则总共为 2 n 2^n 2n 种方案,二者等价。
- 对于②式,不难发现 ( n i ) = ( n n − i ) \dbinom{n}{i}=\dbinom{n}{n-i} (in)=(n−in),所以式子显然成立。
- 对于③式,可以利用二项式定理进行转化证明: 3 n = ( 1 + 2 ) n 3^n=(1+2)^n 3n=(1+2)n。
帕斯卡恒等式:
(
n
k
)
=
(
n
−
1
k
)
+
(
n
−
1
k
−
1
)
\dbinom{n}{k}=\dbinom{n-1}{k}+\dbinom{n-1}{k-1}
(kn)=(kn−1)+(k−1n−1)
学习过帕斯卡恒等式之后,就可以利用这个递推公式来批量预处理组合数了。
四、二项式定理
1.二项式
关于两个整数 x , y x,y x,y,形如 ( x + y ) n (x+y)^n (x+y)n 的式子被我们称为二项式。
下面观察他们的展开式:
x + y = x + y x+y=x+y x+y=x+y
( x + y ) 2 = x 2 + 2 x y + y 2 (x+y)^2=x^2+2xy+y^2 (x+y)2=x2+2xy+y2
( x + y ) 3 = x 3 + 3 x 2 y + 3 x y 2 + y 3 (x+y)^3=x^3+3x^2y+3xy^2+y^3 (x+y)3=x3+3x2y+3xy2+y3
可以看出,展开式中每一项中 x , y x,y x,y 的幂之和都是相同的,而它们的系数满足一定的关系。将其推广到任意整数次幂,则可以得到某一个关于系数的定理,正是下面将要介绍的二项式定理。
2.二项式定理
二项式定理,又称为牛顿二项式定理,是指两个整数的整数次幂的展开式:
(
x
+
y
)
n
=
∑
i
=
0
n
(
n
i
)
x
n
−
i
y
i
(x+y)^n=\sum_{i=0}^{n}\dbinom{n}{i}x^{n-i}y^i
(x+y)n=i=0∑n(in)xn−iyi
证明可以利用前文提到的排列组合的公式
(
n
k
)
=
(
n
−
1
k
)
+
(
n
−
1
k
−
1
)
\dbinom{n}{k}=\dbinom{n-1}{k}+\dbinom{n-1}{k-1}
(kn)=(kn−1)+(k−1n−1) 进行数学归纳法来证明。
五、作业
1.橙题
P7157 「dWoi R1」Physics Problem