排列与组合
四个基本计数原理
(
1
)
(1)
(1) 加法原理: 设集合
S
S
S 被划分成两两不相交的部分
S
1
S_1
S1,
S
2
S_2
S2 …
S
m
S_m
Sm, 则
S
S
S的对象数目可以通过确定它的每一个部分的对象数目并如此相加而得到 :
∣
S
∣
=
∣
S
1
∣
+
∣
S
2
∣
+
.
.
.
+
∣
S
m
∣
{\vert S \vert} = {\vert S_1 \vert} + {\vert S_2 \vert} +...+ {\vert S_m \vert}
∣S∣=∣S1∣+∣S2∣+...+∣Sm∣
例如: 从河北到四川可以坐火车或者坐飞机, 坐飞机有
3
3
3 种方法, 坐火车有
4
4
4 种
方法, 则从河北到四川的方法有 3 + 4 = 7 3+4=7 3+4=7 种方法
( 2 ) (2) (2) 乘法原理 : 加法原理的推论
例如: 从河北到四川第一程需要坐飞机,第二程需要坐火车, 坐飞机有 3 3 3 种方法, 坐火车有 4 4 4 种
方法, 则从河北到四川的方法有
3
∗
4
=
12
3*4=12
3∗4=12 种方法
( 3 ) (3) (3) 减法原理: 令 A A A 是一个集合, 而 U U U 是包含 A A A 的更大集合, 设
A − \overset{-}{A} A−是 A A A 在 U U U 中的补,那么 A A A 中的对象数目 ∣ A ∣ {\vert A \vert} ∣A∣由以下法则给出 ∣ A ∣ = ∣ U ∣ − ∣ A − ∣ {\vert A \vert} = {\vert U \vert} - {\vert \overset{-}{A} \vert} ∣A∣=∣U∣−∣A−∣
例如: 计算 1..600 1..600 1..600 中不能被 6 6 6 整除的数字个数
∣ U ∣ = 600 {\vert U \vert} = 600 ∣U∣=600
∣ A − ∣ = 600 6 = 100 {\vert\overset{-}{A} \vert} = \frac{600}{6}=100 ∣A−∣=6600=100
∣ A ∣ = ∣ U ∣ − ∣ A − ∣ = 600 − 100 = 500 {\vert A \vert} = {\vert U \vert} - {\vert \overset{-}{A} \vert} = 600 -100 =500 ∣A∣=∣U∣−∣A−∣=600−100=500
( 4 ) (4) (4) 除法原理:令 S S S是一个有限集合, 把它划分成 k k k 个部分使得每一部分包含的对象数目相等, 于是, 此划分中的部分数目由下述公式给出:
k = ∣ S ∣ 在 一 个 部 分 中 的 对 象 数 目 k = \frac{{\vert S \vert}}{在一个部分中的对象数目} k=在一个部分中的对象数目∣S∣
例如: 在一排鸽巢中有
740
740
740 只鸽子,如果每个鸽巢含有
5
5
5 只鸽子, 那么鸽巢的数目为
740
5
=
148
\frac{{740}}{5}=148
5740=148
两道例题:
( 1 ) (1) (1) : 在 0 0 0 和 10000 10000 10000 中有多少个整数恰好有一位数字是 5 5 5
解法: 通过添加前导 0 0 0 (如 6 6 6 看作 0006 0006 0006 , 25 25 25 看作 0025 0025 0025 , 325 325 325 看作 0325 0325 0325), 可以把 S S S 中的每一个数都当作 4 4 4 位数, 现在我们根据数字 5 5 5 是位于第 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4位从而把集合分成 4 4 4 个集合, 这 4 4 4 个集合中的每一个都含有 9 × 9 × 9 = 729 9\times9\times9 = 729 9×9×9=729个整数,从而 S S S 所含有的整数个数等于 4 × 729 = 2916 4\times729 = 2916 4×729=2916
(根据这个我出了一道题,可以试着练习一下题目链接)
( 2 ) (2) (2): 由数字 1 , 1 , 1 , 3 , 8 1,1,1,3,8 1,1,1,3,8 可以构造出多少个不同的 5 5 5 位数?
解法: 实际上我们只有两种选择,
3
3
3 要放置在哪里(有
5
5
5 种选择),
8
8
8 要放置在哪里(有
4
4
4 种选择),剩下的位置自动由
1
1
1 占位,所以根据乘法原理,答案是
5
×
4
=
20
5\times4=20
5×4=20
集合的排列
定理
1
1
1: 对于正整数
n
n
n 和
r
r
r ,
r
≤
n
r\leq n
r≤n, 有
P
(
n
,
r
)
=
n
×
(
n
−
1
)
×
⋯
×
(
n
−
r
+
1
)
P(n,r) = n \times (n-1) \times \cdots \times (n-r+1)
P(n,r)=n×(n−1)×⋯×(n−r+1)
并规定
0
!
=
1
0! = 1
0!=1
于是可以写成 P ( n , r ) = n ! ( n − r ) ! P(n,r) = \frac{n!}{(n-r)!} P(n,r)=(n−r)!n!
例题: 将 26 26 26 个字母排序, 使得元音字母 a , e , i , o , u a,e,i,o,u a,e,i,o,u任意两个都不能连续出现,这种排序方法的总数是多少?
解法: 首先排序 21 21 21 个辅音字母, 总共有 21 ! 21! 21! 种方法, 然后将 5 5 5 个元音字母插空到 22 22 22 个位置种,所以答案是
P ( 22 , 5 ) × 21 ! = 22 ! 17 ! × 21 ! P(22,5) \times 21!= \frac{22!}{17!} \times 21! P(22,5)×21!=17!22!×21!
刚刚例题的排列叫做线性排列, 除了线性排列以外, 还有圆排列
考虑以下问题
6个孩子沿着圆圈行进,他们能以多少种不同的方式形成一个圆?
解法:
因为孩子们在行进中, 因此重要的是他们彼此间的相对位置, 因此只要其中一个排列可以通过旋转与另外一个重合,即通过一个圆周位移而得到另一个, 所以每一个循环排列对应
6
6
6 个线性排列
例如下面的循环排列:
来自于下面的线性排列中的每一个:
123456
123456
123456
234561
234561
234561
345612
345612
345612
456123
456123
456123
561234
561234
561234
612345
612345
612345
把上面每一个排列的最后一位移到第一位之前就形成前面的循环排列,于是,
6
6
6个孩子的线性排列与循环排列的对应是
6
6
6 比
1
1
1 ,因此为了求循环排列数目, 我们把线性排列个数除以
6
6
6 ,因此
6
6
6 个孩子的循环排列数目是
6
!
6
=
5
!
\frac{6!}{6} = 5!
66!=5!
定理 2 2 2: n n n 元素集合的循环 r r r 排列的数目是
P
(
n
,
r
)
r
=
n
!
r
×
(
n
−
r
)
!
\frac{P(n,r)}{r}= \frac{n!}{r\times(n-r)!}
rP(n,r)=r×(n−r)!n!
特别地,
n
n
n 元素集合的循环排列的数目是
(
n
−
1
)
!
(n-1)!
(n−1)!
例题1: 10 10 10 个人要围坐一个圆桌,其中有两个人不愿意挨着坐, 共有多少圆形座位设置方法?
解法1: 运用减法原理, 将
p
1
p_1
p1
p
2
p_2
p2 两个人看作一个整体
X
X
X , 于是考虑
9
9
9 个人按照圆桌座位,是
2
×
9
!
9
=
2
×
8
!
2 \times\frac{9!}{9} =2\times 8!
2×99!=2×8!, 十个人按照圆桌座位方法总数是
9
!
9!
9! ,所以答案是
9
!
−
2
×
8
!
9!-2\times 8!
9!−2×8!
解法2:
p
1
p_1
p1 左右两边的座位方法有
8
×
7
8 \times 7
8×7 种可能, 将这三个人看作一个整体, 于是考虑
8
8
8 个人按照圆桌座位,是
2
×
8
!
8
=
2
×
7
!
2 \times\frac{8!}{8} =2\times 7!
2×88!=2×7!,所以答案是
8
×
7
×
7
!
8\times 7 \times 7!
8×7×7!
例题2: 用 20 20 20 种颜色的念珠串成项链,有多少种不同的项链?
解法:
首先很明显是循环排列, 所以项链最多数目是 20 ! 20 = 19 ! \frac{20!}{20} =19! 2020!=19!,然后考虑项链可以翻转过来而不改变排列,所以答案是 19 ! / 2 19!/2 19!/2
关于这部分的理解,例如是
3
3
3 个人按照圆桌座位排序是这两种
其中每个人的相对位置改变了, 所以是两种方法
但对于项链来说,可以翻转,所以本质上是一种项链
(不知道我说清楚了没, 实在不理解可以想围着圆桌坐没法翻转过去倒立着坐)
集合的组合
定理1: 对于 0 ≤ r ≤ n 0 \leq r \leq n 0≤r≤n , 有
P ( n , r ) = r ! ( n r ) P(n,r)=r! \begin{pmatrix} n \\ r \\ \end{pmatrix} P(n,r)=r!(nr)
因此 ( n r ) = n ! r ! ( n − r ) ! \begin{pmatrix} n \\ r \\ \end{pmatrix}=\frac{n!}{r!(n-r)!} (nr)=r!(n−r)!n!
例如: 在平面上给出 25 25 25 个点使得没有 3 3 3 个点共线, 这些点确定多少个三角形?
解法:
( 25 3 ) = 25 ! 3 ! 22 ! \begin{pmatrix} 25 \\ 3 \\ \end{pmatrix}=\frac{25!}{3!22!} (253)=3!22!25!
定理2: (帕斯卡公式) 对于所有满足 1 ≤ k ≤ n − 1 1 \leq k \leq n-1 1≤k≤n−1 的整数 n n n 和 k k k , 有
( n k ) = ( n − 1 k ) + ( n − 1 k − 1 ) \begin{pmatrix} n \\ k \\ \end{pmatrix}=\begin{pmatrix} n-1 \\ k \\ \end{pmatrix}+\begin{pmatrix} n-1 \\ k-1 \\ \end{pmatrix} (nk)=(n−1k)+(n−1k−1)
可以从以下角度理解:
在 n n n 个苹果中选出 k k k 个苹果, 对于第 1 1 1 个苹果,有两种选择,可以选也可以不选
如果选择了, 则是从剩下 n − 1 n-1 n−1 个苹果中选出 k − 1 k-1 k−1 个苹果,即 ( n − 1 k − 1 ) \begin{pmatrix} n-1 \\ k-1 \\ \end{pmatrix} (n−1k−1)
如果不选 ,则是从剩下 n − 1 n-1 n−1 个苹果中选出 k k k 个苹果,即 ( n − 1 k ) \begin{pmatrix} n-1 \\ k \\ \end{pmatrix} (n−1k)
定理3: 对于 n ≥ 0 n \geq 0 n≥0, 有
( n 0 ) + ( n 1 ) + ( n 2 ) + ⋯ + ( n n ) = 2 n \begin{pmatrix} n \\ 0 \\ \end{pmatrix} +\begin{pmatrix} n \\ 1 \\ \end{pmatrix}+\begin{pmatrix} n \\ 2 \\ \end{pmatrix}+ \cdots + \begin{pmatrix} n \\ n \\ \end{pmatrix} = 2^n (n0)+(n1)+(n2)+⋯+(nn)=2n
多重集合的排列
定理1:
设 S S S 是有 k k k 种不同类型对象的多重集合, 每一个元素都有无线重复数,那么 S S S 的 r r r 排列是 k r k^r kr
例如: 由 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4 可以构成多少个四位数,答案显然是 4 4 4^4 44
定理2: 设 S S S 是多重集合, 它有 k k k 种不同类型的对象, 且每一种类型的有限重复数分别是 n 1 , n 2 , ⋯ , n k n_1, n_2, \cdots ,n_k n1,n2,⋯,nk,且 S S S 的大小为 n = n 1 + n 2 + ⋯ + n k n=n_1+n_2+ \cdots +n_k n=n1+n2+⋯+nk, 则 S S S 的排列数目是
n ! n 1 ! n 2 ! ⋯ n k ! \frac{n!}{n_1!n_2! \cdots n_k!} n1!n2!⋯nk!n!
例题: 词MISSISSIPPI中字母的排列数是
11 ! 1 ! 4 ! 4 ! 2 ! \frac{11!}{1!4!4!2!} 1!4!4!2!11!
因为这个数字等于多重集合 { 1 ⋅ M , 4 ⋅ I , 4 ⋅ S , 2 ⋅ P } \lbrace 1 \cdot M, 4 \cdot I,4 \cdot S,2 \cdot P \rbrace {1⋅M,4⋅I,4⋅S,2⋅P} 的排列数
对于定理 2 2 2 还有另外一种理解方式:
把一个对象集合划分成指定大小的各个部分, 其中这些部分都有指定给他们的标签, 为了方便理解,给出以下例子
例子: 考虑有 4 4 4 个对象的集合 { a , b , c , d } \lbrace a,b,c,d \rbrace {a,b,c,d}, 把它划分成两个子集, 每一个大小为 2 2 2
如果没有标签, 那么有三种划分方式:
{
a
,
b
}
\lbrace a,b \rbrace
{a,b};
{
c
,
d
}
\lbrace c,d \rbrace
{c,d}
{
a
,
c
}
\lbrace a,c \rbrace
{a,c};
{
b
,
d
}
\lbrace b,d \rbrace
{b,d}
{
a
,
d
}
\lbrace a,d \rbrace
{a,d};
{
b
,
c
}
\lbrace b,c \rbrace
{b,c}
现在假设给这些部分做上不同的标签, (例如, 红色和蓝色), 则有 6 6 6 种划分,例如对于 { a , b } \lbrace a,b \rbrace {a,b} , { c , d } \lbrace c,d \rbrace {c,d}有
红色
{
a
,
b
}
\lbrace a,b \rbrace
{a,b} 蓝色
{
c
,
d
}
\lbrace c,d \rbrace
{c,d}
蓝色
{
a
,
b
}
\lbrace a,b \rbrace
{a,b} 红色
{
c
,
d
}
\lbrace c,d \rbrace
{c,d}
在一般情况下, 我们可以用 B 1 , B 2 , ⋯ , B k B_1, B_2,\cdots, B_k B1,B2,⋯,Bk 标记这些部分,并且把这些部分想象成一些盒子,此时,以下定理成立
定理3: 设 n n n 是正整数, 并设 n 1 , n 2 , ⋯ , n k n_1, n_2, \cdots, n_k n1,n2,⋯,nk 且 n = n 1 + n 2 + ⋯ + n k n=n_1+n_2+\cdots + n_k n=n1+n2+⋯+nk, 把 n n n 对象集合划分成 k k k 个标有标签的盒子, 且第 1 1 1 个盒子有 n 1 n_1 n1 个对象, 第 2 2 2 个盒子有 n 2 n_2 n2 个对象, ⋯ \cdots ⋯ , 第 k k k 个盒子有 k k k 个对象,这样的划分方法数有
n ! n 1 ! n 2 ! ⋯ n k ! \frac{n!}{n_1!n_2! \cdots n_k!} n1!n2!⋯nk!n!
如果这些盒子没有标签,且 n 1 = n 2 = ⋯ = n k n_1=n_2=\cdots = n_k n1=n2=⋯=nk,那么划分为
n ! k ! n 1 ! n 2 ! ⋯ n k ! \frac{n!}{k!n_1!n_2! \cdots n_k!} k!n1!n2!⋯nk!n!
这是因为, 对于把这些对象分配到 k k k 个没有标签的盒子的每一种方法, 都有 k ! k! k! 种方法给这些盒子标上标签,因此使用除法原理, 没有标签的盒子的划分是
n ! k ! n 1 ! n 2 ! ⋯ n k ! \frac{n!}{k!n_1!n_2! \cdots n_k!} k!n1!n2!⋯nk!n!
如果不好理解, 可以从以下方面考虑
对于定理 2 2 2 是有 k k k 种元素,每一种有 n 1 , ⋯ , n k n_1,\cdots, n_k n1,⋯,nk 个,则每一种元素要占位 n 1 , ⋯ , n k n_1,\cdots, n_k n1,⋯,nk个
而定理 3 3 3 是 将 n = n 1 , ⋯ , n k n=n_1,\cdots, n_k n=n1,⋯,nk个元素, 装在 k k k 个不同的盒子里 (染成 k k k 种颜色), 每一个盒子分别要装 n 1 , ⋯ , n k n_1,\cdots, n_k n1,⋯,nk 个元素, 也可以看作是有 k k k 种元素,每一种有 n 1 , ⋯ , n k n_1,\cdots, n_k n1,⋯,nk 个
如果还不是很清楚的话,我们可以回看这个例子:
考虑有 4 4 4 个对象的集合 { a , b , c , d } \lbrace a,b,c,d \rbrace {a,b,c,d}, 把它划分成两个子集, 每一个大小为 2 2 2, 且标记为两种颜色 (红色和蓝色)
也可以看作是 4 4 4 个元素分成 2 2 2 种 , 每一种都有 2 2 2 个
可以细细体会一下
例子: 有多少种方法在 8 × 8 8 \times 8 8×8 的棋盘上放置 8 8 8 个非攻击型车? (两个车能相互攻击当且仅当它们位于棋盘的同一行或同一列)
解法: 因为两辆车不同位于同一行和同一列 , 所以我们可以一列一列的摆放车, 第 1 1 1 列的车有 8 8 8 行可以放置 , 第 2 2 2 列的车不能和上一列的车摆在同一行 , 有 7 7 7 行可以放置 , 之后同理, 所以很明显有 8 ! 8! 8! 种方法
在上面讨论中, 我们默认每辆车之间没有区别, 现在我们考虑有 8 8 8 辆不同颜色的车, 在决定哪 8 8 8 个方格要被这些车占据后 ( 8 ! 8! 8! 种可能), 我们现在还要决定在每个占据的方格上的车是么颜色的, 很明显也有 8 ! 8! 8! 种可能,于是,在 8 × 8 8 \times 8 8×8 棋盘上具有 8 8 8 种不同颜色的 8 8 8 个非攻击型的车的放置方法数为 8 ! × 8 ! 8! \times 8! 8!×8!
现在假设不是有 8 8 8 个不同颜色的车, 而是有 1 1 1 个红车 ( R R R) , 3 3 3 个蓝车 ( B B B) 和 4 4 4 个黄车 ( Y Y Y), 同时还假设同颜色的车之间没有区别, 现在, 我们看到一个多重集合 { 1 ⋅ R , 3 ⋅ B , 4 ⋅ Y } \lbrace 1 \cdot R, 3 \cdot B,4 \cdot Y \rbrace {1⋅R,3⋅B,4⋅Y}
根据定理
2
2
2 这个多重集合的排列个数等于
8
!
1
!
3
!
4
!
\frac{8!}{1!3!4!}
1!3!4!8!
因此,在 8 × 8 8 \times 8 8×8 棋盘上放置 1 1 1 个红车 , 3 3 3 个蓝车和 4 4 4 个黄车并使它们互相之间不能攻击的方法数为
8 ! 8 ! 1 ! 3 ! 4 ! 8!\frac{8!}{1!3!4!} 8!1!3!4!8!
多重集合的组合
定理1:
设 S S S 是有 k k k 种不同类型对象的多重集合, 每一个元素都有无线重复数,那么 S S S 的 r r r 组合的个数等于 ( r + k − 1 r ) = ( r + k − 1 k − 1 ) \begin{pmatrix} r+k-1 \\ r \\ \end{pmatrix} =\begin{pmatrix} r+k-1 \\ k-1 \\ \end{pmatrix} (r+k−1r)=(r+k−1k−1)
例子 1 1 1: 一家面包店有 8 8 8 种面包圈, 如果一盒内装有一打扎面包圈, 那么能装配多少不同类型的炸面包圈盒?
题解: 因为盒中面包圈顺序与购买者的要求无关, 因此是一个组合问题, 这个数等于 ( 12 + 8 − 1 12 ) = ( 19 12 ) \begin{pmatrix} 12+8-1 \\ 12 \\ \end{pmatrix} =\begin{pmatrix} 19 \\ 12 \\ \end{pmatrix} (12+8−112)=(1912)
例子 2 2 2: 取自 1 , 2 , . . . , k 1,2,...,k 1,2,...,k 的长度为 r r r 的非递减序列的个数是多少?
解法: 排序后是非递增实际上就是 S S S 的 r r r 组合个数
例子 3 3 3: (推广一点点)
下面的方程的整数解的个数是多少?
x 1 + x 2 + x 3 + x 4 = 20 x_1+x_2+x_3+x_4=20 x1+x2+x3+x4=20
其中 x 1 ≥ 3 x_1 \geq 3 x1≥3 , x 2 ≥ 1 x_2 \geq 1 x2≥1 , x 3 ≥ 0 x_3 \geq 0 x3≥0 , x 4 ≥ 5 x_4 \geq 5 x4≥5
我们引入新变量:
y 1 = x 1 − 3 y_1 = x_1 -3 y1=x1−3 , y 2 = x 2 − 1 y_2 = x_2 -1 y2=x2−1 , y 3 = x 3 y_3 = x_3 y3=x3 , y 4 = x 4 − 5 y_4 = x_4 -5 y4=x4−5
此时方程变为 y 1 + y 2 + y 3 + y 4 = 11 y_1+y_2+y_3+y_4=11 y1+y2+y3+y4=11
于是答案为 ( 11 + 4 − 1 11 ) = ( 14 11 ) \begin{pmatrix} 11+4-1 \\ 11 \\ \end{pmatrix} =\begin{pmatrix} 14 \\ 11 \\ \end{pmatrix} (11+4−111)=(1411)