数学基础:组合数学

首先是一些基础的数学问题:

(1)排列,P(n,r)=n!/(n-r)!

(2)组合,C(n,r)=C(n,n-r)=n!/(n-r)!r!;C(n,r)=C(n-1,r)+C(n-1,r-1),也可通过递推进行计算,尤其适合需要多次访问组合数的情况,可以预先处理完毕直接调用。

(3)圆排列,P(n,r)/r

(4)可重排列,nr

(5)可重组合,n中元素每种无限多个,取出r个元素。C(n+r-1,r),隔板法

(6)不相邻组合,从数字1~n中选出r个不相邻元素,C(n-r+1,r),隔板法


鸽巢原理:

若有n个鸽子巢,n+1只鸽子,则至少有一个巢内有至少(向上取整)(n+1)/n=2只

鸽巢原理的主要难点在于分清鸽子和巢,之后进行除运算并向上取整即可。


容斥原理:

集合S中不含性质P1,P2,......,Pn的对象个数:|A1∪A2∪......∪An|=|S|-∑|Ai|+∑|Ai∩Aj|-∑|Ai∩Aj∩Ak|+......+(-1)m*|A1∩A2∩......∩Am|

容斥原理可以用于求解任意大小的集合,或者计算复合事件的概率。当m=3,右式有8项;m=4,右式16项。使用容斥原理,需要对单个事件、双个事件、......的概率先计算,再求最后结果。


斐波那契Fibonacci数:

Fn=Fn-1+Fn-2(n>=2),F0=0,F1=1。

斐波那契数具有性质:1)∑Fi=Fn+2-1      2)∑Fi2=Fn*Fn+1     3)∑i*Fi=n*Fn+2-Fn+3+2      4)任何数都可以表示成若干个斐波那契数之和


卡特兰Catalan数:

基础模型:有一个长度为2*n的01序列,其中1,0各n个,要求对于任意的整数k∈[1,n],数列的前k个数中,1的个数不少于0。

卡特兰数的递推关系:Cn=(4*n-2)/(n+1)*Cn-1;封闭解:Cn=C(2n,n)/(n+1)=C(2n,n)-C(2n,n-1)。

卡特兰数主要应用在以下场景:n条边的凸多边形的三角剖分数;n个节点的二叉树个数;n个元素的出栈方案;2n人排队买票,n个100,n个50,可能的排队方案


错排:

错排是指将[1,n]共n个元素进行排列,使得每一个元素都不在对应位置上的方案数。Dn=(n-1)*(Dn-2+Dn-1),D1=0,D2=1;或者Dn=n*Dn-1+(-1)n

posted @ 2020-10-09 11:51  太山多桢  阅读(680)  评论(0)    收藏  举报