1. 排列组合

1. 加法法则和乘法法则

AB是两个无关的性质,具有性质A的事件有m个,具有性质B的事件有n

法则 事件数 分析
加法法则:具有性质A性质B的事件 m+n 这里的意思是两个性质任选其一,m+n=(m+0)+(0+n)
乘法法则:具有性质A性质B的事件 m×n 这里的意思是两个性质兼而有之,mn组合的情况即为m×n

2. 排列和组合

n个元素中选取m个元素,求其方案数

元素是否有序 方案数 计算过程
排列:有序 Amn n(n1)(nm+1)=n!(nm)!
组合:无序 Cmn n(n1)(nm+1)m!=n!m!(nm)!

3. 扩展问题

1. 圆周排列

n个元素中选取m个元素有序排列在圆周上,其方案数为Amnm。例如abcd这4个元素,在直线上的排列abcddabccdabbcda是不同的,但是在圆周上则是相同的,且选出几个元素就会重复几次,所以只需要将直线上排列数除以m即可。

2. 允许重复的组合

一般的组合是从n个元素中选取m个元素,不允许重复选择同一个元素,组合数为Cmn。而如果允许重复的选择同一个元素,则组合数为Cmn+m1
可以这样思考,允许重复选择相当于在n个元素中多加了m1个“哑元素”,一旦选中了一个“哑元素”,意味着在n个元素中只能选m1个不同元素,也就对应着已经选中的m1个元素中的某一个需要重复一次。这样的“哑元素”最多只能选m1个,因为至少应该选择n个元素中的一个,且此时这个元素重复了m次。
不允许重复的组合以及允许重复的组合可以等价类比如下表

组合是否允许重复 类比球放盒子模型 解释
不允许重复 n个不同的球放入m个相同的盒子且每盒1球 盒子相同代表无序,直接从n个球中选出m
分别放入每个盒子即可,要求nm
允许重复 m个相同的球放入n个不同的盒子(允许空盒) 增加n个假球,如果选中假球则实际上盒子中没有球,
使用隔板法对m+n个球的m+n1个空插入n1个隔板,
将得到n个部分放入盒子

问题变形:
1. 对于整数nm,方程x1+x2++xn=m的非负整数解的个数为Cmn+m1
2. 式子(x1+x2++xn)m的展开式项数为Cmn+m1

3. 不相邻的组合

n个元素中选取m个元素,要求这m个元素在原来的位置上均互不相邻,则组合数为Cmnm+1
可以考虑n个球之间一共可以插入n1个隔板,且隔板都是相同的。现在假设已经选出了互不相邻的m个元素,那么如果把这m个元素放回到原来的位置上,为了保证互不相邻,这m个元素两两之间至少应该有两个隔板,所以先将n1个隔板分配2(m1)个到m个元素两两之间,剩下的n2m+1个隔板就可以在m个元素之间及两边随意插入,一共m+1个位置。此时问题转化为将n2m+1个相同隔板放在m+1个不同位置上的组合数。这可以由“球放盒子”模型直接求解,即C(m+1)1(n2m+1)+(m+1)1=Cmnm+1

2. 递推关系

1. 汉诺塔问题

有三根杆子A,B,C。A杆上有n个(n>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。问至少需要几次移动才能完成。

可以使用递归的思想,设H(n)表示n个圆盘所需要的移动次数,那么移动过程是先将前n1个圆盘移动到B上,接着将第n个圆盘移动到C,最后还要把B上的n1个圆盘移动到C。所以递推公式为H(n)=2H(n1)+1,且H(1)=1。可以根据母函数或者数学归纳法得到H(n)=2n1

2. Fibonacci序列

雌雄一对兔子,出生两个月后能就能繁殖雌雄一对小兔,问n个月后有多少对兔子。

递推公式为F(n)=F(n1)+F(n2),且F(1)=F(2)=1。可以根据母函数法得到F(n)=αnβn5α=1+52β=152

3. 非线性递推序列

1. Stirling数

定义第二类Stirling数为将n个不同的球放入m个相同的盒子,且不允许空盒的方案数,用S(n,m)表示。其递推式为S(n,m)=S(n1,m1)+mS(n1,m),且S(0,)=S(,0)=0S(k,1)=S(k,k)=1对所有k1。Stirling数的每一项可以用下面的三角形计算,按照递推式开看,第几行就有几个数,且每一项都是上一行相同位置的数乘以位置序号,加上上一行前一位置的数。

组合数学问题

2. 球盒模型

按照球是否相同,盒是否相同,是否允许空盒,一共可以分为8种情况。

n个球 m个盒 有无空盒 方案数
不同 不同 有空盒 mn,每个球都可在m个盒中选择,n个球使用乘法法则
不同 不同 无空盒 m!S(n,m),如果盒相同则为S(n,m),再将m个盒全排列
不同 相同 有空盒 nmS(n,1)++S(n,m)
nmS(n,1)++S(n,n)
每一项表示m1个空盒,0个空盒
不同 相同 无空盒 S(n,m),Stirling数的定义
相同 不同 有空盒 Cm1n+m1,增加m个假球,如果选中假球则实际上盒子中没有球,
使用隔板法对m+n个球的m+n1个空插入m1个隔板,
将得到m个部分放入盒子
相同 不同 无空盒 Cm1n1,使用隔板法对n个球的n1个空插入m1个隔板,
将得到m个部分放入盒子
相同 相同 有空盒 穷取法,相当于将n0,1,,m进行分解的方案数,
且分解的数字没有顺序
相同 相同 无空盒 穷取法,相当于将nm0,1,,m进行分解的方案数,
且分解的数字没有顺序

3. Catalan数

Catalan数定义为给定2n个数由n0n1组成,要求这样的排列方案数,使得排列的任意前k个数中的1的个数总是不少于0的个数。可以求得这样的排列方案数Catalan(2n)=1n+1Cn2n=Cn2nCn12n

关于Catalan数有极其多的变形问题,参见维基百科卡塔兰数,其一个巧妙的证明方法参见折现法——卡特兰数证明

4. 容斥原理

1. De morgan定理

  • AB=AB
  • AB=AB

2. 容斥原理

  • |AB|=|A|+|B||AB|
  • |ABC|=|A|+|B|+|C||AB||AC||BC|+|ABC|

3. 广义容斥原理

  • |AB|=|A||AB|
  • |ABC|=|AB||ABC|
  • |ABC|=|A||AB||AC|+|ABC|
  • |ABCD|=|A||AB||AC||AD|+|ABC|+|ABD|+|ACD||ABCD|

4. 计算举例

1. 欧拉函数问题,求不超过120的素数个数

因为112=121>120,所以不超过120的合数一定是2,3,5,7的倍数。分别令A2A3A5A7为小于120且是2,3,5,7的倍数,则不超过120的素数个数就是|A2A3A5A7|

|A2A3A5A7|==120|A2A3A5A7|120(|A2|+|A3|+|A5|+|A7|)+(|A2A3|+|A2A5|+|A2A7|+|A3A5|+|A3A7|+|A5A7|)(|A2A3A5|+|A2A3A7|+|A2A5A7|+|A3A5A7|)+|A2A3A5A7|

其中一项|A2|=1202=60|A3|=1203=40|A5|=1205=24|A7|=1207=17,两项|A2A3|=1202×3=20|A2A5|=1202×5=12|A2A7|=1202×7=8|A3A5|=1203×5=8|A3A7|=1203×7=5|A5A7|=1205×7=3,三项|A2A3A5|=1202×3×5=4|A2A3A7|=1202×3×7=2|A2A5A7|=1202×5×7=1|A3A5A7|=1203×5×7=1,四项|A2A3A5A7|=1202×3×5×7=0,因此上式等于12060402417+20+12+8+8+5+34211+0=27

2. 错排问题,即1,2,,n的全排列中每个元素都不在各自位置上的排列数

Ai表示第i个数仍然在自己位置上的排列数,所以只需要考虑其他位置元素的全排列数即可,因此错排列数就是|A1A2An|=n!|A1A2An|,而

|Ai||AiAj||A1A2An|===(n1)!(n2)!(nn)!i=1,2,,nij, i,j=1,2,,n

所以错排列数等于n!C1n(n1)!+C2n(n2)!+±Cnn(nn)!=n!n!1!+n!2!±n!n!

相关文章: