
无重排列与组合
-
排列(Permutation)一般只等是从n个不同的元素中取出r个不重复的元素,按照一定的次序排列,通常称为n个中取r个的无重排列,通常记为Pnr.
-
组合(Combination)一般指的是从n个元素中取出r个不相同的元素,组成一子集,而不考虑元素之间的顺序关系,通常称为n个中取r个的无重组合,记做Cnr.
对于排列和组合计数最经典的模型是往盒子里面放小球.
对于排列Pnr,将n个不同的小球放入到r个不同的盒子中.从盒子的角度分步来考虑,首先对于第一个盒子选择放小球,有n个小球可以选择,然后处理将n−1个盒子放入到r−1个盒子中,这里允许一个盒子只能放一个小球,.于是得到Pnr=n∗Pn−1r−1这个递推公式.如果从小球的角度考虑,选择第一个小球如果放,那么有r个盒子可以放置,同时要处理剩下的n−1个小球放入到r−1个盒子中;如果第一个小球不被选中,那么要处理的问题就是从n−1个小球中选择r个放入到盒子中去,并且每个盒子一个小球.于是可以得到Pnr=r∗Pn−1r−1+Pn−1r.
在组合的小球盒子模型中盒子是完全一样的没有区别,可以先假定盒子是有区别的,对盒子进行编号,则盒子的排列中共有r!种,此时就对应前面排列盒子完全不同的情况.于是可以得到r!Cnr=Pnr,从何得到:
Cnr=r!Pnr
有组合的定义可以知道,从n个中选择r个的数目与从n个中选择n−r个的数目是相同的,因为选择r个后,剩下的就恰好是n−r,即Cnr=Cnn−r.
关于组合数还有一个公式:Cnl⋅Clr=Cnr⋅Cn−rl−r.意思是从n个中选择l个元素,再从这l个元素选择r个元素的数目等于先从n个元素中选择r个,在从剩下的n−r中选择剩下的l−r个.
这明显是一条分割线,明天再写2020年7月7日23:57:53.
组合数的另外一个应用模型是格路模型,从(0,0)走到(m,n),在不能回退的情况下,总共有多少种走法,总共有Cm+nm中.基于各路模型还可以得到关于组合数的另外一个恒等式,总共可以走n步,最后要求抵达(n−r,r)这个位置,那么这个位置的前一个位置只有两种选择 (n−r−1,n)或 (n−r,r−1),从而可以得到Cnr=Cn−r−1r+Cn−rr−1.
二项式定理也是组合数的一个应用.对于
(a+b)n=(a+b)⋅(a+b)⋯(a+b)n=Cn0an+Cn1an−1b+⋯+Cnn−1abn−1+Cnnbn
表示从n个(a+b)中每一个选择一个a或b得到的ab的数目,如果从n个中选择出r个b,则an−rbr的系数应该就是Cnr.特别的,当a,b取特殊值时可以得到下面两个等式.
-
a=b=1
2n=Cn0+Cn1+⋯+Cnr+⋯+Cnn−1+Cnn
-
a=1,b=−1
0=Cn0−Cn1+⋯+(−1)rCnr+⋯+(−1)nCnn.
最后,关于组合式的一个有名恒等式: Chu−Vandermonde恒等式
Cm+nr=Cm0Cnr+Cm1Cnr−1+⋯+CmrCn0
这个恒等式可以用取小球来简单的解释,假设有m个红球,n个蓝球,从这个m+n个球中选择出r个,利用分类,可以知道,等价于选择0个红球r个蓝球,1个红球r−1个蓝球,…这些选择之和,而对每一个选择采用的应该是分步原理.
可重组合计数
对于r个小球,小球之没有区别,认为是一样的,但是n个盒子是有区别的,对于每一个盒子允许放多个小球,允许盒子为空盒子.
在前面的不可重组合中,n个小球是不同的,但是r个盒子是相同的,并且每个盒子只允许放一个小球.
从集合A={1,2,3,…,n}中选择r个元素{a1,a2,⋯,ar},ai∈A,i=1,2,⋯,r并且允许ai=aj,i=j,记做Cnr.并且Cnr=Cn+r−1r.
可以将其转化成门框分隔问题,有r个相同的球,放到n个不同的区域中,其中每个区域可以放多个或者不放小球,需要n−1个框来分割出这个n个区域,将小球看做0,将框看做∣,那么:
r0⋯0∣0⋯0∣⋯∣0⋯0n
这里面的框∣和小球0都是没有标记彼此相同的,将问题转化为求n个相同的∣和r个相同的0的间错排列问题,假设它们彼此不同,于是这个问题就相当于求n−r+1的全排列,然后剔除0和∣相同的情况,于是得到:
r!(n−1)!(n+r−1)!=Cn+r−1r=Cnr
可重组合的一个应用是线性方程的整数解问题.线性方程x1+x2+⋯+xn=r的非负整数解的个数是Cn+r−1r.这里把+看做隔板,将r个小球放到n个区域中,每个区域可放多个也可不放小球,于是就是一个可重组合计数的问题.
关于是否重复排列组合计数的总结:
Type |
Sample |
Order counts? |
Repetition allowed |
Number ofways |
无重组合 |
n个求取r个 |
No |
No |
Cnr |
无重排列 |
n个人找r个人排队 |
Yes |
No |
Pnr |
可重排列 |
n中水果选择r个拼果篮 |
No |
Yes |
Cn+r−1r |
可重排列 |
n个字母组成的r位串 |
Yes |
Yes |
nr |
多重全排列 |
r1个a,r2个b组成的n位串 |
Yes |
Yes |
r1!r−2!n! |
放球问题计数的八种模型
将n个球放到m个盒子中,根据球和盒子是否有区别,是否允许空盒,有下面这些情况:
Type |
Number of ways |
n个球有区别,m个盒子有区别,有空盒 |
mn |
n个球有区别,m个盒子有区别,无空盒 |
n!S(n,m) |
n个球有区别,m个盒子无区别,有空盒 |
k=1∑min{n,m}S(n,k) |
n个球有区别,m个盒子无区别,无空盒 |
S(n,m) |
n个球无区别,m个盒子有区别,有空盒 |
Cn+m−1r |
n个球无区别,m个盒子有区别,无空盒 |
Cn−1n−m=Cn−1m−1 |
n个球无区别,m个盒子无区别,有空盒 |
G(x)=(1−x)(1−x2)⋯(1−xm)1中xn项的系数 |
n个球无区别,m个盒子无区别,无空盒 |
G(x)=(1−x)(1−x2)⋯(1−xm)xm中xn项的系数 |
母函数
对于一个计数序列:
G(x)=c0+c1x+c2x2+⋯+crxr+⋯
函数G(x),称作序列c0,c1,⋯,cr,⋯的母函数,母函数也称作生成函数,用来表示一个计数序列.
母函数就是一列用来表示一串数字序列的挂衣架.
母函数的一个应用是给出m个骰子,计算点数之和为n的数目,对应的G(x)=(x+x2+x3+x4+x5+x6),点数为n的数目即是展开后xn的系数.
整数拆分
将一个正整数拆分为若干正整数之和,如果拆分的各部分之间有序称为有序拆分,否则称为无序拆分.等价于有n个相同的小球,将这些相同的小球分成若干堆,总共有多少种分法.
对于有序拆分,n个小球分成r堆,n个小球紧密相邻,中间有n−1个空隙,选择r−1个插入一个隔板,从而可以把这n个小球分成r份,从而结果就是Cn−1r−1.相当于将n个无区别的求放到r个有区别的盒子中,并且每一个盒子不允许空.
对于正整数的无序拆分,数字之间无顺序并且允许重复,它的个数是p(n).欧拉给出的这个问题的解是利用母函数:
G(x)=(1+x+x2+⋯)(1+x2+x4+⋯)⋯(1+xm+x2m+⋯)⋯展开式中xn的系数就是拆分解的数目.
另外,1−x1的无穷级数展开是(1+x+x2+⋯),所以上面的G(x),可以记做:
G(x)=(1−x)(1−x2)⋯(1−xm)⋯1
p(n)就是G(x)展开式中xn的系数.对青前面放球无区别的球放入无区别的盒子中并且允许盒子为空.
对于上面放球问题中球和盒子都相同并且不允许空盒时,可以首先选择往每一个盒子放一个球,然后往从剩下的n−m个求进行上面那种允许空盒的放置,此时应该对应G(x)的展开式中xn−m的系数.
Stirling数
第一类Stirling数s(n,k)
n个人条集体舞,分成m个圆环的方法的数目.
s(n,0)s(n+1,m)=0,s(1,1)=1=s(n,m−1)+n⋅s(n,m)
对于第n+1个人,它可以自己跳舞,剩下的n个人构成m−1个圆环;或者加入到已有的队伍中去,总共有n种选择.
第二类stirling数S(n,k)
相当于将n个不同的小球放到m个无区别的盒子中并且不允许盒子为空,求放球的数目.可以先考虑解决盒子有区别,并且每一个盒子不空,然后通过除以m!得到无区别的数目.将n个不同的小球放到m个不同的盒子中并且允许盒子空的方案数∣S∣=mn.设Ai,i=1,2,3,⋯表示第i个盒子为空则Ai=(m−1)n.,总共有Cn1个;两个盒子为空,即∣Ai∩Aj∣=(m−2)n,总共有Cn2种;⋯.由容斥原理:
N=∣A1∩A2∩⋯∩An∣=mn−Cn1(m−1)n+Cn2(m−1)+⋯+(−1)rCnr(m−r)n+⋯=k=0∑n(−1)kCnk(m−k)n
从而:
S(n,m)=m!1k=0∑n(−1)k(m−k)n
特别地:因为S(m,m)=1,所以
m!=k=0∑m(−1)kCmk(m−k)m.
这是一条未完待更的分割线2020年7月8日15:21:31