在排列与组合问题中,有这样的一种方法:将复杂问题的空间映射到一个容易求解的问题的空间上,这个映射可以是1-1映射,或者是1对m,m对1的(根据除法原理,要求m是一个常数)。
n元素的循环r排列
每一个循环r排列对应r个不同的线性r排列。由除法原理,n元素集合的循环r排列的数目为
P
(
n
,
r
)
r
=
n
!
r
(
n
−
r
)
!
\frac{P(n,r)}{r} =\frac{n!}{r(n-r)!}
rP(n,r)=r(n−r)!n!。
严谨地,还要说明,每一个线性r排列,都能唯一的对应于一个循环r排列。
多重集合,有限重复数的排列问题
设S是多重集合,它有k种不同类型的对象,且每一种类型的有限重复数分别是n1,n2,…,nk。设S的大小为n=n1+n2+…+nk。则根据乘法原理,S的排列数目为:
(
n
n
1
)
(
n
−
n
1
n
2
)
(
n
−
n
1
−
n
2
n
3
)
.
.
.
(
n
−
n
1
−
n
2
−
.
.
.
−
n
k
−
1
n
k
)
=
n
!
n
1
!
n
2
!
.
.
.
n
k
!
\begin{pmatrix}n \\n_1 \end{pmatrix}\begin{pmatrix}n-n_1 \\n_2 \end{pmatrix} \begin{pmatrix}n-n_1-n_2 \\n_3 \end{pmatrix}...\begin{pmatrix}n-n_1-n_2-...-n_{k-1} \\n_k \end{pmatrix}=\frac{n!}{n_1!n_2!...n_k!}
(nn1)(n−n1n2)(n−n1−n2n3)...(n−n1−n2−...−nk−1nk)=n1!n2!...nk!n!
推广:设n是正整数,并设n1,n2,…,nk是正整数且n=n1+n2+…+nk。把n对象集合划分成k个标有标签的盒子,且第1个盒子含有n1个对象,第2个盒子含有n2个对象,…,第k个盒子含有nk个对象,这样的划分方法数等于
n
!
n
1
!
n
2
!
.
.
.
n
k
!
\frac{n!}{n_1!n_2!...n_k!}
n1!n2!...nk!n!。原因是将n个对象放入k个盒子的划分方法数,可以使用乘法原理,因此得到了和上面相同的结果。
可以看出,多重集合A的有限重复数的n排列的问题,等价于n个不同对象的集合B按照A中各元素的重复数进行带标签的划分的问题。事实上,它们构成了一个1-1映射:B对象的下标可以对应A的一个排列的一个位置,从而确定了这个位置在A集合中的类型属性。
如果这些盒子没有标签,且有n1=n2=…=n k,划分数会有什么变化呢?这两个条件事实上让k个盒子没有了任何区别。因此,虽然我们暂时不知道n个元素的划分方法有多少种,但是我们可以发现,对于任意一种划分方法,可以通过k!种不同的贴标签方式,从而对应于唯一一种之前不同标签下的划分方法。这样就建立起了一个1对k!的映射,根据除法原理,划分数为
n
!
k
!
n
1
!
n
2
!
.
.
.
n
k
!
\frac{n!}{k!n_1!n_2!...n_k!}
k!n1!n2!...nk!n!。
最多m个A和最多n个B的排列数
构造多重集S={(m+1)·A,(n+1)·B},S’是S的全排列中减去一个排列(A…AB…B)的排列的集合。
对S’中的每一个元素,按顺序做以下两步操作:(1)删去从左往右数第一个B,以及这个B左边的所有A;(2)删去从右往左数第一个A,以及这个A右边的所有B。操作后的元素,恰好就是一个最多m个A,最多n个B的排列。
下面证明:每个最多m个A,最多n个B的排列都能被上述操作得到。
假设排列X=x1x2…xk不能被上述操作得到,设X中A的个数为SA,B的个数为SB,有SA<m+1,SB<n+1,至少还能添加1个A和1个B,保证A和B的数量都不会超出S’中排列的A,B的数量。因此可以构造排列X’=A…ABx1x2…xkAB…B,左边的连续A和右边的连续B按数量补齐,使得X’中有m+1个A,n+1个B。显然X’∈S’,与假设矛盾。因此假设不成立,原命题成立。又因为两个集合元素都是有限的,因此不会出现有元素映射不到的情况,因此,最多m个A和最多n个B的排列和S’中的元素构成一个1-1映射。排列数为
∣
S
′
∣
=
(
m
+
n
+
2
m
+
1
)
−
1
\left | S' \right |=\begin{pmatrix}m+n+2\\m+1\end{pmatrix} -1
∣S′∣=(m+n+2m+1)−1