前言
组合数学研究的对象是组态。所谓组态就是指若干个对象按照某些约束条件组成的各种状态。
排列与组合
在组合数学中,集合分为无重集和重集。
\lbrace表达式\rbrace
- 无重集即集合中的不同元素只出现一次,指在选取过程中每个元素不可重复选取,也就是至多选取一次。记作, S = { a 1 , a 2 , ⋯ , a k } S=\lbrace a_1,a_2,⋯,a_k\rbrace S={a1,a2,⋯,ak}
- 重集即集合中的不同元素可出现多次,指在选取过程中每个元素可重复选取。有限重集就是第i个元素a,至多选取n;次。
记作, = { n 1 ⋅ a 1 , n 2 ⋅ a 2 , ⋯ , n k ⋅ a k } =\lbrace n1⋅a1,n2⋅a2,⋯,nk⋅ak \rbrace ={n1⋅a1,n2⋅a2,⋯,nk⋅ak} 其中n,称作a,的重数。
无限重集指每个不同元素可以任意选取若干次。记作,
S={ω⋅a1,ω⋅a2,⋯,ω0⋅ak}
无重集的排列与组合
无重集的排列
定义:若集合含有n个不同的元素,从中任选r个的有序编排,则称为排列或r排列。其不同的排列的个数,简称排列数,记作 p ( n , r ) p(n,r) p(n,r)
-
定理1: 对 于 r < = n , p ( n , r ) = n ! ( n − r ) ! 对于r <= n ,p(n,r) = \frac{n!}{(n-r)!} 对于r<=n,p(n,r)=(n−r)!n! 。
-
定理2: 从n个元素的集合中任取r个的圆排列个数为: p ( n , r ) r \frac{p(n,r)}{r} rp(n,r)。证:由前面的定理,从n个不同元素中任取r个的排列个数。为p(n,r),这种排列又称线排列。将这些排列分成组,每组有r个线排列且产生相同的r圆排列,所以r圆排列的个数为p(n,r)/r。
特别地,n个元素的圆排列个数为(n-1)!。
我们举一个例子:
对于一个圆排列abcde , 我们从5个空隙中断开,那么会产生5个线排列。也就是说这5个线排列对应的圆排列是一样的。
应用例子
若男女混座,问6位男士和6位女士围圆桌就座有多少种方式?
解:我们先安排6位男士就座,6位男士的圆排列数为5!,6位男士就座后,每相邻两人之间有一个空位,共6个。刚好安排6位女士,6位女士的全排列数为6!。所以按乘法原理就是 5! * 6!.
无重集的组合
定义:从n个元素的集合S中,任取r个元素且不考虑次序,则称为组合或r组合。其不同的组合个数,简称组合数,记作 C ( n , r ) C(n,r) C(n,r)
- 定理 ,
对
于
r
<
=
n
,
C
(
n
,
r
)
=
p
(
n
,
r
)
r
!
对于r<=n,C(n,r) = \frac{p(n,r)}{r!}
对于r<=n,C(n,r)=r!p(n,r)
例子 :求1~300的整数中,有多少种方法选出三个整数来使得它们的和被3整除?
解1,2,…,300这300个整数可以分成三组:被3整除者为一组,除以3余1者为一组,除以3余2者为一组,显然,每一组有100个整数。如果三个整数都选自同一组,其和必能被3整除;如果每组选取一个整数,其和也必能被3整除。因此,选择三个整数其和能被3整除的方法总数为
C(100,3)+C(100,3) +C(100,3)+1003=1485100。
为什么每一组有100个数呢:我们以余1的为例,对于集合中每一个数我们可以表示成 3 x + 1 3x+1 3x+1,对于个数我们将99代入< 300 ,代入100>300 , 那么我们x的取值为0 - 99 一共100个数。
应用例子
- 若一个凸多边形无三条对角线在其内部交于一点,问这些对角线被它们的交点分成多少短:
凸多边形对角线条数为 C ( n , 2 ) − n C(n,2)-n C(n,2)−n,由于每四个点有一个交点,凸多边形交点数为 C ( n , 4 ) C(n,4) C(n,4)。每一个对角线上的K个交点将其分为K+1的线段,那么应该是 ( K 1 + 1 + . . . + K n + 1 ) = ( K 1 + . . . + K n ) + n (K_1+1+...+K_n+1) =(K_1+...+K_n)+n (K1+1+...+Kn+1)=(K1+...+Kn)+n,其中n为对角线条数,由于一个交点位于两条对角线上,所以总数为 ( C ( n , 2 ) − n ) + 2 ∗ C ( n , 4 ) (C(n,2)-n)+2*C(n,4) (C(n,2)−n)+2∗C(n,4) - 1000!后边有多少个0?
1到1000中2的个数远多于5的个数,2*5可得到一个0。
所以求得1到1000中有多少个5就可以求得1000!的末尾有几个0.
分析
5的1次幂5的倍数增加1个0 (5,10,15,20,25,30,…)
5的2次幂25的倍数增加2个0(必然是5的倍数)(25,50,75,100,125…)
5的3次幂125的倍数增加3个0(必然是25的倍数)(125,250,375,500…)
5的4次幂625的倍数增加4个0(必然是125的倍数)(625,1250,1875,2500…)
…
所以先求出5的倍数
加上25的倍数(2个0,其中1个已记入5的倍数)
加上125的倍数(3个0,其中1个已记入5的倍数1个已记入25的倍数)
加上625的倍数(4个0,其中…)
1000/5=200 (1000里面含有200个5的倍数,但同时也包含了25倍数,125的倍数,625的倍数各一次)
1000/25=40(1000里面含有40个25的倍数,同时也含有125的倍数,625的倍数各一次)
1000/125=8(1000里面含有8个125的倍数,同时也含有625的倍数)
1000/625=1(1000里含有1个625的倍数)
所以1000!里面含 有0的个数为200+40+8+1=249个
重集的排列和组合
重集的排列
- 定理1 : 若S是含有K个不同元素而每一个元素具有无限重复的重集,则S的r排列的个数是 k r k^r kr 。因为是无限重复的,那么对于每一个元素我们都有K种选法,选r个,因此就是 k r k^r kr
- 定理2:设重集S有k个不同元素 a 1 , a 2 , … , a k a_1,a_2,…,a_k a1,a2,…,ak,其有限重复数分别为 n 1 , n 2 , ⋯ , n k n_1,n_2,⋯,n_k n1,n2,⋯,nk,且 n = n 1 + n 2 + ⋯ + n k n=n_1+n_2+⋯+n_k n=n1+n2+⋯+nk,则S的排列个数(指的是所有元素的排列)等于: n ! n 1 ! ∗ n 2 ! . . . ∗ n k ! \frac{n!}{n_1! * n_2!...*n_k!} n1!∗n2!...∗nk!n!
重集的组合
- 若S是重集,则S的r组合是不考虑次序地从S中选择r个元素,因此,S的r组合通常是一个子重集。如果S有n个元素,则只存在一个S的n组合。
- 定理1 :设S是有K个不同元素的重集,且每个元素的重复次数无限,则S的r组合个数等于
C
(
k
−
1
+
r
,
r
)
C(k-1+r,r)
C(k−1+r,r) . 证明: 设S的不同元素是
a
1
,
a
2
,
…
,
a
k
a_1,a_2,…,a_k
a1,a2,…,ak,因而
S
=
{
∞
∗
a
1
,
∞
∗
a
2
,
.
.
.
.
,
∞
⋅
a
k
}
S=\lbrace \infty *a_1,\infty *a_2,....,\infty⋅a_k \rbrace
S={∞∗a1,∞∗a2,....,∞⋅ak}. S的任何r组合形如
{
x
1
∗
a
1
,
x
2
∗
a
2
,
⋯
,
x
k
∗
a
k
}
\lbrace x_1*a_1,x_2*a2,⋯,x_k *a_k \rbrace
{x1∗a1,x2∗a2,⋯,xk∗ak},其中
x
1
,
x
2
,
…
,
x
k
是
非
负
整
数
且
x
1
+
x
2
+
⋯
+
x
k
=
r
x_1,x_2,…,x_k是非负整数且 x_1+x_2+⋯+x_k=r
x1,x2,…,xk是非负整数且x1+x2+⋯+xk=r 反之,任何满足
x
1
+
x
2
+
⋯
+
x
k
=
r
的
非
负
整
数
序
列
x
1
,
x
2
,
.
.
.
,
x
k
对
应
S
的
一
个
r
组
合
x_1+x_2+⋯+x_k=r 的非负整数序列x_1,x_2,...,x_k对应S的一个r组合
x1+x2+⋯+xk=r的非负整数序列x1,x2,...,xk对应S的一个r组合。
于
是
S
的
r
组
合
个
数
等
于
方
程
x
1
+
x
2
+
⋯
+
x
k
=
r
的
非
负
整
数
解
的
个
数
于是S的r组合个数等于方程 x_1+x_2+⋯+x_k=r 的非负整数解的个数
于是S的r组合个数等于方程x1+x2+⋯+xk=r的非负整数解的个数。
可以证明这些解的个数等于重集 T = { ( k − 1 ) ∗ 0 , r ∗ 1 ) } T = \lbrace (k-1) *0 , r * 1) \rbrace T={(k−1)∗0,r∗1)}的排列个数。给定T的一个排列,这(k-1)个0把r个1分成k组。令 x 1 x_1 x1个1在第一个0的左边, x 2 x_2 x2个1在第一个0和第二个0之间,…, x k x_k xk个1在最后一个0的右边, 而 x 1 , x 2 , . . . , x k 是 非 负 整 数 且 x 1 + x 2 + … + x k = r 而x_1,x_2,...,x_k是非负整数且x_1+x_2+…+ x_k=r 而x1,x2,...,xk是非负整数且x1+x2+…+xk=r。 反之,给定非负整数 x 1 , x 2 , … , x k , 且 x 1 + x 2 + ⋯ + x k = r , x_1,x_2,…,x_k,且 x_1+x_2+⋯+x_k=r, x1,x2,…,xk,且x1+x2+⋯+xk=r,可按相反步骤构造T的一个排列。于是:重集S的r组合个数等于重集T-{(k-1)·0,r·1}的排列个数。而重集T的排列个数就是有限重复集的排列个数,由上面公式,T的排列个数等于
( k − 1 + r ) ! ( k − 1 ) ! ∗ r ! = C ( k − 1 + r , r ) \frac{(k−1+r)!}{(k−1)!*r!}=C(k−1+r,r) (k−1)!∗r!(k−1+r)!=C(k−1+r,r) 证毕。
对于上面的结果和推导过程,对于重集T的由来,我么可以类比隔板法,(由方程我们可以将r看成r个1)我们有r个一样的球,我们将其放入k个盒子,可以允许有空盒的方案数。我们用隔板法得到的结果是一样的。
那么由这个我们就可以求出
x
1
+
x
2
+
.
.
.
+
x
k
=
r
x_1 + x_2+...+x_k = r
x1+x2+...+xk=r的非负整数解的个数就是
C
(
k
−
1
+
r
,
r
)
C(k−1+r,r)
C(k−1+r,r) , 而这就是
(
x
1
+
.
.
.
+
x
k
)
r
的
项
数
( x_1 + ...+x_k)^r的项数
(x1+...+xk)r的项数
- 定理2 : 设重集S有K个不同元素 a 1 , a 2 , . . . , a k a_1,a_2,...,a_k a1,a2,...,ak的重集,且每个元素有无限重复次 。若要求S的每个元素至少在r组合出现一次,则S的这种r组合个数等于 C ( r − 1 , k − 1 ) , r > = k C(r-1,k-1),r>=k C(r−1,k−1),r>=k ,这就是隔板法的理论依据。也就是方程 x 1 + . . . , + x k = r , x i > = i x_1 +...,+x_k = r, x_i >=i x1+...,+xk=r,xi>=i的正整数的解的个数。
- 定理2的推论: 将r个相同的元素放入n个不同的盒子而使每个盒子至少含有q个元素的分配方法的个数为 C ( n − n q + r − 1 , n − 1 ) C(n-nq+r-1,n-1) C(n−nq+r−1,n−1)