1. 排列组合
1. 加法法则和乘法法则
设A,B是两个无关的性质,具有性质A的事件有m个,具有性质B的事件有n个
| 法则 |
事件数 |
分析 |
| 加法法则:具有性质A或性质B的事件 |
m+n
|
这里或的意思是两个性质任选其一,m+n=(m+0)+(0+n)
|
| 乘法法则:具有性质A和性质B的事件 |
m×n
|
这里和的意思是两个性质兼而有之,m和n组合的情况即为m×n
|
2. 排列和组合
从n个元素中选取m个元素,求其方案数
| 元素是否有序 |
方案数 |
计算过程 |
| 排列:有序 |
Amn
|
n(n−1)⋯(n−m+1)=n!(n−m)!
|
| 组合:无序 |
Cmn
|
n(n−1)⋯(n−m+1)m!=n!m!(n−m)!
|
3. 扩展问题
1. 圆周排列
从n个元素中选取m个元素有序排列在圆周上,其方案数为Amnm。例如a,b,c,d这4个元素,在直线上的排列abcd,dabc,cdab,bcda是不同的,但是在圆周上则是相同的,且选出几个元素就会重复几次,所以只需要将直线上排列数除以m即可。
2. 允许重复的组合
一般的组合是从n个元素中选取m个元素,不允许重复选择同一个元素,组合数为Cmn。而如果允许重复的选择同一个元素,则组合数为Cmn+m−1。
可以这样思考,允许重复选择相当于在n个元素中多加了m−1个“哑元素”,一旦选中了一个“哑元素”,意味着在n个元素中只能选m−1个不同元素,也就对应着已经选中的m−1个元素中的某一个需要重复一次。这样的“哑元素”最多只能选m−1个,因为至少应该选择n个元素中的一个,且此时这个元素重复了m次。
不允许重复的组合以及允许重复的组合可以等价类比如下表
| 组合是否允许重复 |
类比球放盒子模型 |
解释 |
| 不允许重复 |
n个不同的球放入m个相同的盒子且每盒1球 |
盒子相同代表无序,直接从n个球中选出m个 分别放入每个盒子即可,要求n≥m
|
| 允许重复 |
m个相同的球放入n个不同的盒子(允许空盒) |
增加n个假球,如果选中假球则实际上盒子中没有球, 使用隔板法对m+n个球的m+n−1个空插入n−1个隔板, 将得到n个部分放入盒子 |
问题变形:
1. 对于整数n和m,方程x1+x2+⋯+xn=m的非负整数解的个数为Cmn+m−1。
2. 式子(x1+x2+⋯+xn)m的展开式项数为Cmn+m−1。
3. 不相邻的组合
从n个元素中选取m个元素,要求这m个元素在原来的位置上均互不相邻,则组合数为Cmn−m+1。
可以考虑n个球之间一共可以插入n−1个隔板,且隔板都是相同的。现在假设已经选出了互不相邻的m个元素,那么如果把这m个元素放回到原来的位置上,为了保证互不相邻,这m个元素两两之间至少应该有两个隔板,所以先将n−1个隔板分配2(m−1)个到m个元素两两之间,剩下的n−2m+1个隔板就可以在m个元素之间及两边随意插入,一共m+1个位置。此时问题转化为将n−2m+1个相同隔板放在m+1个不同位置上的组合数。这可以由“球放盒子”模型直接求解,即C(m+1)−1(n−2m+1)+(m+1)−1=Cmn−m+1。
2. 递推关系
1. 汉诺塔问题
有三根杆子A,B,C。A杆上有n个(n>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘;大盘不能叠在小盘上面。问至少需要几次移动才能完成。
可以使用递归的思想,设H(n)表示n个圆盘所需要的移动次数,那么移动过程是先将前n−1个圆盘移动到B上,接着将第n个圆盘移动到C,最后还要把B上的n−1个圆盘移动到C。所以递推公式为H(n)=2H(n−1)+1,且H(1)=1。可以根据母函数或者数学归纳法得到H(n)=2n−1。
2. Fibonacci序列
雌雄一对兔子,出生两个月后能就能繁殖雌雄一对小兔,问n个月后有多少对兔子。
递推公式为F(n)=F(n−1)+F(n−2),且F(1)=F(2)=1。可以根据母函数法得到F(n)=αn−βn5√且α=1+5√2和β=1−5√2。
3. 非线性递推序列
1. Stirling数
定义第二类Stirling数为将n个不同的球放入m个相同的盒子,且不允许空盒的方案数,用S(n,m)表示。其递推式为S(n,m)=S(n−1,m−1)+mS(n−1,m),且S(0,⋅)=S(⋅,0)=0,S(k,1)=S(k,k)=1对所有k≥1。Stirling数的每一项可以用下面的三角形计算,按照递推式开看,第几行就有几个数,且每一项都是上一行相同位置的数乘以位置序号,加上上一行前一位置的数。

2. 球盒模型
按照球是否相同,盒是否相同,是否允许空盒,一共可以分为8种情况。
|
n个球 |
m个盒 |
有无空盒 |
方案数 |
| 不同 |
不同 |
有空盒 |
mn,每个球都可在m个盒中选择,n个球使用乘法法则 |
| 不同 |
不同 |
无空盒 |
m!S(n,m),如果盒相同则为S(n,m),再将m个盒全排列 |
| 不同 |
相同 |
有空盒 |
当n≥m为S(n,1)+⋯+S(n,m), 当n≤m为S(n,1)+⋯+S(n,n), 每一项表示m−1个空盒,⋯,0个空盒 |
| 不同 |
相同 |
无空盒 |
S(n,m),Stirling数的定义 |
| 相同 |
不同 |
有空盒 |
Cm−1n+m−1,增加m个假球,如果选中假球则实际上盒子中没有球, 使用隔板法对m+n个球的m+n−1个空插入m−1个隔板, 将得到m个部分放入盒子 |
| 相同 |
不同 |
无空盒 |
Cm−1n−1,使用隔板法对n个球的n−1个空插入m−1个隔板, 将得到m个部分放入盒子 |
| 相同 |
相同 |
有空盒 |
穷取法,相当于将n用0,1,⋯,m进行分解的方案数, 且分解的数字没有顺序 |
| 相同 |
相同 |
无空盒 |
穷取法,相当于将n−m用0,1,⋯,m进行分解的方案数, 且分解的数字没有顺序 |
3. Catalan数
Catalan数定义为给定2n个数由n个0和n个1组成,要求这样的排列方案数,使得排列的任意前k个数中的1的个数总是不少于0的个数。可以求得这样的排列方案数Catalan(2n)=1n+1Cn2n=Cn2n−Cn−12n。
关于Catalan数有极其多的变形问题,参见维基百科卡塔兰数,其一个巧妙的证明方法参见折现法——卡特兰数证明。
4. 容斥原理
1. De morgan定理
-
A∪B⎯⎯⎯⎯⎯⎯⎯⎯⎯=A⎯⎯⎯∩B⎯⎯⎯
-
A∩B⎯⎯⎯⎯⎯⎯⎯⎯⎯=A⎯⎯⎯∪B⎯⎯⎯
2. 容斥原理
-
|A∪B|=|A|+|B|−|A∩B|
-
|A∪B∪C|=|A|+|B|+|C|−|A∩B|−|A∩C|−|B∩C|+|A∩B∩C|
3. 广义容斥原理
-
|A∩B⎯⎯⎯|=|A|−|A∩B|
-
|A∩B∩C⎯⎯⎯|=|A∩B|−|A∩B∩C|
-
|A∩B⎯⎯⎯∩C⎯⎯⎯|=|A|−|A∩B|−|A∩C|+|A∩B∩C|
-
|A∩B⎯⎯⎯∩C⎯⎯⎯∩D⎯⎯⎯|=|A|−|A∩B|−|A∩C|−|A∩D|+|A∩B∩C|+|A∩B∩D|+|A∩C∩D|−|A∩B∩C∩D|
4. 计算举例
1. 欧拉函数问题,求不超过120的素数个数
因为112=121>120,所以不超过120的合数一定是2,3,5,7的倍数。分别令A2,A3,A5,A7为小于120且是2,3,5,7的倍数,则不超过120的素数个数就是|A⎯⎯⎯2∩A⎯⎯⎯3∩A⎯⎯⎯5∩A⎯⎯⎯7|。
|A⎯⎯⎯2∩A⎯⎯⎯3∩A⎯⎯⎯5∩A⎯⎯⎯7|==120−|A2∪A3∪A5∪A7|120−(|A2|+|A3|+|A5|+|A7|)+(|A2∩A3|+|A2∩A5|+|A2∩A7|+|A3∩A5|+|A3∩A7|+|A5∩A7|)−(|A2∩A3∩A5|+|A2∩A3∩A7|+|A2∩A5∩A7|+|A3∩A5∩A7|)+|A2∩A3∩A5∩A7|
其中一项|A2|=⌊1202⌋=60,|A3|=⌊1203⌋=40,|A5|=⌊1205⌋=24,|A7|=⌊1207⌋=17,两项|A2∩A3|=⌊1202×3⌋=20,|A2∩A5|=⌊1202×5⌋=12,|A2∩A7|=⌊1202×7⌋=8,|A3∩A5|=⌊1203×5⌋=8,|A3∩A7|=⌊1203×7⌋=5,|A5∩A7|=⌊1205×7⌋=3,三项|A2∩A3∩A5|=⌊1202×3×5⌋=4,|A2∩A3∩A7|=⌊1202×3×7⌋=2,|A2∩A5∩A7|=⌊1202×5×7⌋=1,|A3∩A5∩A7|=⌊1203×5×7⌋=1,四项|A2∩A3∩A5∩A7|=⌊1202×3×5×7⌋=0,因此上式等于120−60−40−24−17+20+12+8+8+5+3−4−2−1−1+0=27。
2. 错排问题,即1,2,⋯,n的全排列中每个元素都不在各自位置上的排列数
设Ai表示第i个数仍然在自己位置上的排列数,所以只需要考虑其他位置元素的全排列数即可,因此错排列数就是|A⎯⎯⎯1∩A⎯⎯⎯2∩⋯∩A⎯⎯⎯n|=n!−|A1∪A2∪⋯∪An|,而
|Ai||Ai∩Aj||A1∩A2∩⋯∩An|==⋮=(n−1)!(n−2)!(n−n)!i=1,2,⋯,ni≠j, i,j=1,2,⋯,n
所以错排列数等于n!−C1n(n−1)!+C2n(n−2)!+⋯±Cnn(n−n)!=n!−n!1!+n!2!−⋯±n!n!。