容斥原理应用
前言
容斥原理是组合数学中的一个重要原理,它在计数研究中占有重要地位。但容斥原理所研究的计数是若干有限集的交、并或差的计数。
由于我们讲的是应用,因此原理就不再仔细展开。我们在应用的时候要将某一类满足某种性质的元素看成集合,这个是应用容斥原理的最基本的技巧。
错位排列
定义:设集合S=(1,2,3,…,n},则S的排列数为n!。若其中有两个排列12…n和 i1i2⋯in, 如果 i1≠1,i2≠2,⋯,in≠n 则称排列ji2…1为12…n的一个错位排列。即是说,一个错位排列就是使得原排列的每个元素都不在原来位置的排列。简称为 D n D_n Dn
- 由规律我们得到递推关系: D n = ( n − 1 ) ( D n − 1 + D n − 2 D_n =(n-1)(D_{n-1}+D_{n-2} Dn=(n−1)(Dn−1+Dn−2
- 由D1 = 0 , D2 = 1,所以D0 = 1 ,那么通过化简我们有 D n = n D n − 1 + ( 1 − ) n D_n = nD_{n-1} +(1-)^n Dn=nDn−1+(1−)n
定理:对于n>=1 ,有
D
n
=
n
!
(
1
−
1
1
!
+
.
.
.
+
(
−
1
)
n
1
n
!
)
D_n = n!(1-\frac{1}{1!} + ...+(-1)^n\frac{1}{n!})
Dn=n!(1−1!1+...+(−1)nn!1)
证明:
证设S={1,2,…,n},S0为S的所有n!个排列的集合。令Aj表示排列1,2…,n中使j位置上的元素保持不动的排列的集合,j=1,2,…,n。则排列1,2,…,n的所有错位排列必是在
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
n
‾
\overline{A1}∩ \overline{A2}∩⋯∩\overline{An}
A1∩A2∩⋯∩An.中的那些排列,故有。
D
n
=
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
n
‾
D_n = \overline{A1}∩ \overline{A2}∩⋯∩\overline{An}
Dn=A1∩A2∩⋯∩An。而且
A
j
=
(
n
−
1
)
!
,
j
=
1
,
2
,
⋅
⋅
,
n
Aj=(n−1)!,j=1,2,··,n
Aj=(n−1)!,j=1,2,⋅⋅,n。
∣
A
i
∩
A
i
∣
=
(
n
−
2
)
!
,
i
,
j
=
1
,
2
,
…
,
n
,
但
i
≠
j
∣Ai∩Ai∣=(n−2)!,i,j=1,2,…,n,但i\neq j
∣Ai∩Ai∣=(n−2)!,i,j=1,2,…,n,但i=j
对于任意整数k且1≤k≤n,则有
∣
A
n
∩
A
2
∩
⋯
∣
A
k
∣
=
(
n
−
k
)
!
∣An∩A2∩⋯∣Ak∣=(n−k)!
∣An∩A2∩⋯∣Ak∣=(n−k)!
图为(1,2,…,k)的k组合为
C
(
n
,
k
)
C(n,k)
C(n,k)个,应用容斥原理得到
D
n
=
n
!
(
1
−
1
1
!
+
.
.
.
+
(
−
1
)
n
1
n
!
)
证
毕
D_n = n!(1-\frac{1}{1!} + ...+(-1)^n\frac{1}{n!})证毕
Dn=n!(1−1!1+...+(−1)nn!1)证毕。
棋阵多项式
概念
n个棋子在n×n的棋盘上的一种布局,并规定:每行每列有且只有一个棋子,这样一种布局对应n个元素的某一排列。例如,下图是一个4×4的棋盘,4个棋子在棋盘上的一种布局,如图所示,其所对应的排列为2314。
可以把棋盘C推广到任意形状。
设
为
r
k
(
C
)
为
k
个
棋
子
按
规
定
布
置
到
棋
盘
C
上
的
不
同
方
案
数
设为r_k(C)为k个棋子按规定布置到棋盘C上的不同方案数
设为rk(C)为k个棋子按规定布置到棋盘C上的不同方案数
禁位排列
定义:是指在一个排列中禁止某些元素占据某些位置。
证明:对于其证明我们是正难则方的思路先求落入禁区的,在求禁区的方案数需要用到容斥原理。
若有n个棋子布入n×n的棋盘。设
A
i
A_i
Ai为i个棋子落入禁区的排列集合,i=1,2,…,n。
若一个棋子落入禁区的方案数为
r
1
r1
r1,剩下的n-1个棋子为无限制的排列,故至少有一个棋子落入禁区的排列数为
r
1
∗
(
n
−
1
)
!
r_1*(n-1)!
r1∗(n−1)!。两个棋子落入禁区的方案数为
r
2
r_2
r2,而其余n-2个棋子为无限制的排列,故至少有两个棋子落入禁区的排列数为
r
2
∗
(
n
−
2
)
!
r_2*(n-2)!
r2∗(n−2)!,依此类推。由容斥原理,n个棋子无一落入禁区的排列数为
Q
n
=
A
1
‾
∩
A
2
‾
∩
⋯
∩
A
n
‾
=
n
!
−
r
1
⋅
(
n
−
1
)
!
+
r
2
⋅
(
n
−
2
)
!
+
⋯
+
(
−
1
)
∗
r
n
∗
0
!
Q_n=\overline{A1}∩ \overline{A2}∩⋯∩\overline{An} \\ =n!−r_1⋅(n−1)!+r_2⋅(n−2)!+⋯+(−1)^*r_n*0!
Qn=A1∩A2∩⋯∩An=n!−r1⋅(n−1)!+r2⋅(n−2)!+⋯+(−1)∗rn∗0! 证毕。
而对于 r 1 , r 2 , . . , r n r_1,r_2,..,r_n r1,r2,..,rn的值我们有由禁区组成图形的棋阵多项式求出。
递归关系
定义:对于数列 a 1 , a − 2 , a 3 , … , a n a_1,a-2,a_3,…,a_n a1,a−2,a3,…,an 把该数列中除了有限个数以外的任何数a,和它前面的一个或一些数关联起来的方程叫做递归关系。为了能够着手计算,必须知道数列中的一个或一些数,这样的数叫做边界条件
Hanoi塔问题
我们将n个盘从a柱移动到c柱上,需要移动的次数分析如下:
令h(n)为n个盘从a柱移到c柱所需移动的盘次。显然,当n=1时,只需移动一个盘次,故h(1)=1。当n=2时,先将上面的小盘移到b柱上;然后,将下面的大盘移到c柱上;最后再将b柱上的小盘移到c柱上,共计移动3个盘次,故h(2)=3。依此类推,总之,当有n个盘时,设法先将上面的n-1个盘移到b柱上,再将第n个盘从a柱移到c柱上,然后再把b柱上的n-1个盘设法移动到c柱上。于是我们得到以下递归关系
h
(
n
)
=
2
h
(
n
一
1
)
+
1
,
h
(
1
)
=
1
,
n
=
2
,
3
,
…
.
h(n)=2h(n一1)+1,h(1)=1,n=2,3,….
h(n)=2h(n一1)+1,h(1)=1,n=2,3,….
通过母函数求解后得到:
h
(
n
)
=
2
n
−
1
h(n)=2^n-1
h(n)=2n−1
平面分割问题
1.问题的提出
设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。
2.问题的分析
令a点为n条封闭曲线把平面分割成的区域个数。显然,当n=1时, a1=2; 当n=2时, a2=4; 当n=3时, 。a3=8,⋯。 于是我们发现一个规律:若n-1条封闭曲线把平面分割成的区域个数为an-,,则第n条封闭曲线与这n-1条封闭曲线相交于2(n-1)个点,这2(n-1)个点把第n条封闭曲线截成2(n-1)段弧,这些弧把原来的2(n―1)个区域中的每个区域一分为2,故新增加的区域个数为2(n-1),如图6.2所示,于是得到以下递归关系
a n = a n − 1 + 2 ( n − 1 ) , a 1 = 2 , a 0 = 2 , n = 2 , 3 a_n=a_{n-1}+2(n-1),a_1=2,a_0=2,n=2,3 an=an−1+2(n−1),a1=2,a0=2,n=2,3
通过母函数求解后得到:
a
n
=
n
(
n
−
1
)
+
2
a_n=n(n-1)+2
an=n(n−1)+2