排列问题
普通排列
定义:
从n个数字中,选择m个进行排列,称为n个元素中取出m个元素的一个排列.
排列的方案数记为
A
n
m
A^m_n
Anm。
计算公式:
A
n
m
A^m_n
Anm =
n
!
/
(
n
−
m
)
!
n! / (n-m)!
n!/(n−m)!
特殊:
当 n = m,此时为全排列。且
A
n
m
A^m_n
Anm =
n
!
n!
n!
当 m > n,排列数为0。
循环全排列
定义:
循环排列(circular permutation)亦称圆排列、环排列等。是排列的一种,指m个数中选n个个不同的元素排列成一个环形,既无头也无尾。
计算公式:
A
n
m
A^m_n
Anm /
m
m
m =
n
!
/
m
(
n
−
m
)
!
n! / m(n - m)!
n!/m(n−m)!
多重全排列
定义
多重全排列是指求
r
1
r_1
r1个
a
a
a,
r
2
r_2
r2个
b
b
b,…,
r
t
r_t
rt个
t
t
t的排列数,设
r
1
+
r
2
+
…
+
r
t
=
n
r1+r2+…+rt=n
r1+r2+…+rt=n,此排列数称为多重全排列,表示为
P
(
n
:
r
1
,
r
2
,
…
r
t
)
P(n:r_1,r_2,…r_t)
P(n:r1,r2,…rt)。
计算公式:
P
(
n
:
r
1
,
r
2
,
…
r
t
)
=
n
!
/
(
r
1
!
r
2
!
.
.
.
r
t
!
)
P(n:r1,r2,…rt) = n!/ (r_1! r_2! ... r_t!)
P(n:r1,r2,…rt)=n!/(r1!r2!...rt!)
例题:
有a,b,c三种旗子各4面,一共12面,将12面旗子排成一列,求一共有多少种排列方案。
解
先将旗子当成不同的12面旗子,此时根据全排列公式得到方案数 n! = 12!
每种旗子有4面,即每种有4!次重复。三种就有
(
4
!
)
3
(4!)^3
(4!)3次重复。
再根据多重全排列公式得到方案数:
P
(
12
:
4
,
4
,
4
)
=
12
!
/
(
4
!
)
3
P(12:4,4,4) = 12!/ (4!)^3
P(12:4,4,4)=12!/(4!)3
错排
定义:
n个有序的元素应有n!个不同的排列,如若一个排列使得所有的元素不在原来的位置上,则称这个排列为错排。n个元素的错排数记为 D(n)。
计算公式:
D
(
n
)
=
(
n
−
1
)
∗
[
D
(
n
−
1
)
+
D
(
n
−
2
)
]
D(n) = (n-1) * [D(n-1) + D(n-2)]
D(n)=(n−1)∗[D(n−1)+D(n−2)]
这是一个递归关系式。
组合问题
普通组合
定义:
从n个元素中,任取m(m≤n)个元素组成一组,叫做从n个不同元素中取出m个元素的一个组合。方案数记作
C
n
m
。
C^m_n。
Cnm。
计算公式:
C
n
m
=
n
!
/
m
!
(
n
−
m
)
!
C^m_n = n! / m! (n-m)!
Cnm=n!/m!(n−m)!
本质与普通排列问题相同。
多重组合
即多重全排列。
组合数学的常用定理
加法&乘法原理
加法原理:
做一件事,只需要1步就可以完成。完成它有n种方式,第1种有
m
1
m_1
m1个方式,第2种有
m
2
m_2
m2个方式,…,那么完成这件事有
m
1
+
m
2
+
.
.
.
+
m
n
m_1+m_2+...+m_n
m1+m2+...+mn种方式。
一步可以完成,就是加法。
乘法原理:
做一件事,完成它需要n个步骤,第1步有
m
1
m_1
m1种不同的方法,第2步有
m
2
m_2
m2种不同的方法,……,第n步有
m
n
m_n
mn种不同的方法。
那么完成这件事共有
N
=
m
1
×
m
2
×
…
×
m
n
N=m_1×m_2×…×mn
N=m1×m2×…×mn 种不同的方法。
需要分步骤完成,就是乘法。
抽屉原理
桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放不少于两个苹果。这就是“抽屉原理”。
抽屉原理的一般表述:有n+1个元素放到n个集合,其中必有一个集合里至少有2个元素。
抽屉原理有时也被称为鸽巢原理。它是组合数学中一个重要的原理。
容斥原理
在计数时,必须注意没有重复,没有遗漏。如何防止重叠部分被计算?
先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这就是容斥原理。
两个集合的容斥公式:A∪B =|A∪B| = |A|+|B| - |A∩B | (∩:重合的部分)
三个集合的容斥公式:|A∪B∪C| = |A|+|B|+|C| - |A∩B| - |B∩C| - |C∩A| + |A∩B∩C|
极端原理
解决数学问题时,经常要考虑“假如一个都没有”、“假如每一个都有”…
如果是最特殊(如最大、最小、最长、最短等)的极端情况,在这种极端的状态下,往往能使问题的关键暴露出来,帮助我们找到解题的途径。这种思想,在数学中称为极端原理。
极端原理也是组合数学的一个重要思想。