组合数学问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhufenghao/article/details/70889484

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(n1)(nm+1)=n!(nm)!
组合:无序 Cmn n(n1)(nm+1)m!=n!m!(nm)!

3. 扩展问题

1. 圆周排列

n 个元素中选取 m 个元素有序排列在圆周上,其方案数为 Amnm 。例如 a b c d 这4个元素,在直线上的排列 abcd dabc cdab bcda 是不同的,但是在圆周上则是相同的,且选出几个元素就会重复几次,所以只需要将直线上排列数除以 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. 对于整数 n m ,方程 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)=0 S(k,1)=S(k,k)=1 对所有 k1 。Stirling数的每一项可以用下面的三角形计算,按照递推式开看,第几行就有几个数,且每一项都是上一行相同位置的数乘以位置序号,加上上一行前一位置的数。

2. 球盒模型

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

n 个球 m 个盒 有无空盒 方案数
不同 不同 有空盒 mn ,每个球都可在 m 个盒中选择, n 个球使用乘法法则
不同 不同 无空盒 m!S(n,m) ,如果盒相同则为 S(n,m) ,再将 m 个盒全排列
不同 相同 有空盒 nm S(n,1)++S(n,m)
nm S(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 个部分放入盒子
相同 相同 有空盒 穷取法,相当于将 n 0,1,,m 进行分解的方案数,
且分解的数字没有顺序
相同 相同 无空盒 穷取法,相当于将 nm 0,1,,m 进行分解的方案数,
且分解的数字没有顺序

3. Catalan数

Catalan数定义为给定 2n 个数由 n 0 n 1 组成,要求这样的排列方案数,使得排列的任意前 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的倍数。分别令 A2 A3 A5 A7 为小于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!

猜你喜欢

转载自blog.csdn.net/zhufenghao/article/details/70889484