组合数学(一)

组合数学(一)

无重排列与组合

  • 排列(Permutation)一般只等是从nn个不同的元素中取出rr个不重复的元素,按照一定的次序排列,通常称为nn个中取rr个的无重排列,通常记为PnrP_n^r.

  • 组合(Combination)一般指的是从nn个元素中取出rr个不相同的元素,组成一子集,而不考虑元素之间的顺序关系,通常称为nn个中取rr个的无重组合,记做CnrC_n^r.

    对于排列和组合计数最经典的模型是往盒子里面放小球.

    对于排列PnrP_n^r,将nn个不同的小球放入到rr个不同的盒子中.从盒子的角度分步来考虑,首先对于第一个盒子选择放小球,有nn个小球可以选择,然后处理将n1n-1个盒子放入到r1r-1个盒子中,这里允许一个盒子只能放一个小球,.于是得到Pnr=nPn1r1P_n^r=n*P_{n-1}^{r-1}这个递推公式.如果从小球的角度考虑,选择第一个小球如果放,那么有rr个盒子可以放置,同时要处理剩下的n1n-1个小球放入到r1r-1个盒子中;如果第一个小球不被选中,那么要处理的问题就是从n1n-1个小球中选择rr个放入到盒子中去,并且每个盒子一个小球.于是可以得到Pnr=rPn1r1+Pn1rP_n^r=r*P_{n-1}^{r-1}+P_{n-1}^r.

    在组合的小球盒子模型中盒子是完全一样的没有区别,可以先假定盒子是有区别的,对盒子进行编号,则盒子的排列中共有r!r!种,此时就对应前面排列盒子完全不同的情况.于是可以得到r!Cnr=Pnrr!C_n^r=P_n^r,从何得到:

Cnr=Pnrr! C_n^r = \frac{P_n^r}{r!}

    有组合的定义可以知道,从nn个中选择rr个的数目与从nn个中选择nrn-r个的数目是相同的,因为选择rr个后,剩下的就恰好是nrn-r,即Cnr=CnnrC_n^r = C_n^{n-r}.

关于组合数还有一个公式:CnlClr=CnrCnrlrC_n^l \cdot C_l^r = C_n^r \cdot C_{n-r}^{l-r}.意思是从nn个中选择ll个元素,再从这ll个元素选择rr个元素的数目等于先从nn个元素中选择rr个,在从剩下的nrn-r中选择剩下的lrl-r个.


这明显是一条分割线,明天再写2020年7月7日23:57:53.


    组合数的另外一个应用模型是格路模型,从(0,0)(0,0)走到(m,n)(m,n),在不能回退的情况下,总共有多少种走法,总共有Cm+nmC_{m+n}^m中.基于各路模型还可以得到关于组合数的另外一个恒等式,总共可以走nn步,最后要求抵达(nr,r)(n-r,r)这个位置,那么这个位置的前一个位置只有两种选择 (nr1,n)(n-r-1,n)(nr,r1)(n-r,r-1),从而可以得到Cnr=Cnr1r+Cnrr1C_n^r=C_{n-r-1}^r+C_{n-r}^{r-1}.

    二项式定理也是组合数的一个应用.对于

(a+b)n=(a+b)(a+b)(a+b)n=Cn0an+Cn1an1b++Cnn1abn1+Cnnbn \begin{matrix} (a+b)^n= \underbrace{(a+b)\cdot(a+b) \cdots (a+b)} \\ n \\ = C_n^0a^n+C_n^1a^{n-1}b+\cdots+C_n^{n-1}ab^{n-1}+C_n^nb^n \end{matrix}

表示从nn(a+b)(a+b)中每一个选择一个aabb得到的abab的数目,如果从nn个中选择出rrbb,则anrbra^{n-r}b^r的系数应该就是CnrC_n^r.特别的,当a,ba,b取特殊值时可以得到下面两个等式.

  • a=b=1a=b=1
    2n=Cn0+Cn1++Cnr++Cnn1+Cnn2^n = C_n^0+C_n^1+\cdots+C_n^r+\cdots+C_n^{n-1}+C_n^n
  • a=1,b=1a=1,b=-1
    0=Cn0Cn1++(1)rCnr++(1)nCnn0=C_n^0-C_n^1+\cdots+(-1)^rC_n^r+\cdots+(-1)^nC_n^n.

最后,关于组合式的一个有名恒等式: ChuVandermondeChu-Vandermonde恒等式

Cm+nr=Cm0Cnr+Cm1Cnr1++CmrCn0C_{m+n}^r=C_m^0C_n^r+C_m^1C_n^{r-1}+\cdots+C_m^rC_n^0

这个恒等式可以用取小球来简单的解释,假设有mm个红球,nn个蓝球,从这个m+nm+n个球中选择出rr个,利用分类,可以知道,等价于选择00个红球rr个蓝球,11个红球r1r-1个蓝球,\dots这些选择之和,而对每一个选择采用的应该是分步原理.

可重组合计数

    对于rr个小球,小球之没有区别,认为是一样的,但是nn个盒子是有区别的,对于每一个盒子允许放多个小球,允许盒子为空盒子.

    在前面的不可重组合中,nn个小球是不同的,但是rr个盒子是相同的,并且每个盒子只允许放一个小球.

    从集合A={1,2,3,,n}A=\{1,2,3,\dots, n\}中选择rr个元素{a1,a2,,ar},aiA,i=1,2,,r\{a_1,a_2,\dotsb,a_r\},a_i\in A,i=1,2,\dotsb,r并且允许ai=aj,ija_i=a_j,i\ne j,记做Cnr\overline{C_n^r}.并且Cnr=Cn+r1r\overline{C_n^r}=C_{n+r-1}^r.

    可以将其转化成门框分隔问题,有rr个相同的球,放到nn个不同的区域中,其中每个区域可以放多个或者不放小球,需要n1n-1个框来分割出这个nn个区域,将小球看做00,将框看做|,那么:

r000000n \begin{matrix} r \\ \overbrace{0\cdots0 \underbrace{|0\cdots0|\cdots|}0\cdots0} \\ n \end{matrix}

    这里面的框|和小球00都是没有标记彼此相同的,将问题转化为求nn个相同的|rr个相同的00的间错排列问题,假设它们彼此不同,于是这个问题就相当于求nr+1n-r+1的全排列,然后剔除00|相同的情况,于是得到:
(n+r1)!r!(n1)!=Cn+r1r=Cnr \frac{(n+r-1)!}{r!(n-1)!}=C_{n+r-1}^r=\overline{C_n^r}

    可重组合的一个应用是线性方程的整数解问题.线性方程x1+x2++xn=rx_1+x_2+\cdots+x_n=r的非负整数解的个数是Cn+r1rC_{n+r-1}^r.这里把++看做隔板,将rr个小球放到nn个区域中,每个区域可放多个也可不放小球,于是就是一个可重组合计数的问题.

    关于是否重复排列组合计数的总结:

Type Sample Order counts? Repetition allowed Number ofways
无重组合 n个求取r个 No No CnrC_n^r
无重排列 n个人找r个人排队 Yes No PnrP_n^r
可重排列 n中水果选择r个拼果篮 No Yes Cn+r1rC_{n+r-1}^r
可重排列 n个字母组成的r位串 Yes Yes nrn^r
多重全排列 r1r_1个a,r2r_2个b组成的n位串 Yes Yes n!r1!r2!\frac{n!}{{r_1}!{r-2}!}

放球问题计数的八种模型

nn个球放到mm个盒子中,根据球和盒子是否有区别,是否允许空盒,有下面这些情况:

Type Number of ways
n个球有区别,m个盒子有区别,有空盒 mnm^n
n个球有区别,m个盒子有区别,无空盒 n!S(n,m)n!S(n,m)
n个球有区别,m个盒子无区别,有空盒 k=1min{n,m}S(n,k)\sum_{k=1}^{min\{n,m\}}{S(n,k)}
n个球有区别,m个盒子无区别,无空盒 S(n,m)S(n,m)
n个球无区别,m个盒子有区别,有空盒 Cn+m1rC_{n+m-1}^r
n个球无区别,m个盒子有区别,无空盒 Cn1nm=Cn1m1C_{n-1}^{n-m}=C_{n-1}^{m-1}
n个球无区别,m个盒子无区别,有空盒 G(x)=1(1x)(1x2)(1xm)G(x)=\frac{1}{(1-x)(1-x^2)\cdots(1-x^m)}xnx^n项的系数
n个球无区别,m个盒子无区别,无空盒 G(x)=xm(1x)(1x2)(1xm)G(x)=\frac{x^m}{(1-x)(1-x^2)\cdots(1-x^m)}xnx^n项的系数

母函数

    对于一个计数序列:
G(x)=c0+c1x+c2x2++crxr+\qquad G(x) = c_0+c_1x+c_2x^2+\cdots+c_rx^r+\cdots
函数G(x)G(x),称作序列c0,c1,,cr,c_0,c_1,\cdots,c_r,\cdots的母函数,母函数也称作生成函数,用来表示一个计数序列.

母函数就是一列用来表示一串数字序列的挂衣架.

    母函数的一个应用是给出mm个骰子,计算点数之和为nn的数目,对应的G(x)=(x+x2+x3+x4+x5+x6)G(x)=(x+x^2+x^3+x^4+x^5+x^6),点数为nn的数目即是展开后xnx^n的系数.

整数拆分

    将一个正整数拆分为若干正整数之和,如果拆分的各部分之间有序称为有序拆分,否则称为无序拆分.等价于有nn个相同的小球,将这些相同的小球分成若干堆,总共有多少种分法.

    对于有序拆分,nn个小球分成rr堆,nn个小球紧密相邻,中间有n1n-1个空隙,选择r1r-1个插入一个隔板,从而可以把这nn个小球分成rr份,从而结果就是Cn1r1C_{n-1}^{r-1}.相当于将nn个无区别的求放到rr个有区别的盒子中,并且每一个盒子不允许空.

    对于正整数的无序拆分,数字之间无顺序并且允许重复,它的个数是p(n)p(n).欧拉给出的这个问题的解是利用母函数:
G(x)=(1+x+x2+)(1+x2+x4+)(1+xm+x2m+)G(x)=(1+x+x^2+\cdots)(1+x^2+x^4+\cdots)\cdots(1+x^m+x^{2m}+\cdots)\cdots展开式中xnx^n的系数就是拆分解的数目.

    另外,11x\frac{1}{1-x}的无穷级数展开是(1+x+x2+)(1+x+x^2+\cdots),所以上面的G(x)G(x),可以记做:
G(x)=1(1x)(1x2)(1xm) G(x) = \frac{1}{(1-x)(1-x^2)\cdots(1-x^m)\cdots}
p(n)p(n)就是G(x)G(x)展开式中xnx^n的系数.对青前面放球无区别的球放入无区别的盒子中并且允许盒子为空.

    对于上面放球问题中球和盒子都相同并且不允许空盒时,可以首先选择往每一个盒子放一个球,然后往从剩下的nmn-m个求进行上面那种允许空盒的放置,此时应该对应G(x)G(x)的展开式中xnmx^{n-m}的系数.

Stirling数

第一类Stirling数s(n,k)s(n,k)

    nn个人条集体舞,分成mm个圆环的方法的数目.
s(n,0)=0,s(1,1)=1s(n+1,m)=s(n,m1)+ns(n,m) \begin{aligned} s(n,0)&=0,s(1,1)=1 \\ s(n+1,m) &= s(n,m-1) + n\cdot s(n,m) \end{aligned}
对于第n+1n+1个人,它可以自己跳舞,剩下的nn个人构成m1m-1个圆环;或者加入到已有的队伍中去,总共有nn种选择.

第二类stirling数S(n,k)S(n,k)

    相当于将nn个不同的小球放到mm个无区别的盒子中并且不允许盒子为空,求放球的数目.可以先考虑解决盒子有区别,并且每一个盒子不空,然后通过除以m!m!得到无区别的数目.将nn个不同的小球放到mm个不同的盒子中并且允许盒子空的方案数S=mn|S|=m^n.设Ai,i=1,2,3,A_i,i=1,2,3,\cdots表示第ii个盒子为空则Ai=(m1)nA_i=(m-1)^n.,总共有Cn1C_n^1个;两个盒子为空,即AiAj=(m2)n|A_i\cap A_j|=(m-2)^n,总共有Cn2C_n^2种;\cdots.由容斥原理:

N=A1A2An=mnCn1(m1)n+Cn2(m1)++(1)rCnr(mr)n+=k=0n(1)kCnk(mk)n \begin{aligned} N &=|\overline{A_1}\cap\overline{A_2}\cap \cdots \cap \overline{A_n}|\\ & = m^n - C_n^1(m-1)^n + C_n^2(m-1) + \cdots+ (-1)^rC_n^r(m-r)^n+\cdots\\ & = \sum_{k=0}^n{(-1)^kC_n^k(m-k)^n} \end{aligned}

从而:

S(n,m)=1m!k=0n(1)k(mk)n \begin{aligned} S(n,m) = \frac{1}{m!}\sum_{k=0}^n{(-1)^k(m-k)^n} \end{aligned}

特别地:因为S(m,m)=1S(m,m)=1,所以
m!=k=0m(1)kCmk(mk)mm!=\sum_{k=0}^m{(-1)^kC_m^k(m-k)^m}.


这是一条未完待更的分割线2020年7月8日15:21:31