卡特兰公式的证明 :F(m,n)=C(n+m,n)-C(n+m,n-1);(m>=n)

1 通项公式:h(n)=C(2n,n)/(n+1)=(2n)!/((n!)*(n+1)!)

2递推公式:h(n)=((4*n-2)/(n+1))*h(n-1);
 h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)*h(0).

3前几项为:h(0)=1,h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,......

F(m,n)=C(n+m,n)-C(n+m,n-1) = (n+m)! / (m!*n!) - (n+m)! / [(n+m - (n-1) )! * (n-1)! ]

= (n+ m)! / (m!*n!) - (n+m)! / [( m +1 ) ! * (n-1)! ]

= (n+ m)! / (m!*n!) -  [ (n+m)! / (m ! * n ! ) ] * [ n / (m+1) )]

=[ (n+ m)! / (m!*n!) ]   (1-n / (m+1) )

=C(n+m,n)  [ (m-n+1) / (m+1) ]

若(m==n)则=C(2n,n) / (n+1) ;这个式子可以自己手动推一下;

接下来讲怎么证明F(m,n)=C(n+m,n)-C(n+m,n-1)?

现在有m个0,和n个1,现在将这些数字写成一个01串,并且要求任何时候前k个数字,1的个数不能大于0的个数。

不考虑符不符合要求:那么01串总共有C(n+m,n)个,

那么现在考虑其中不符合要求的01串有多少个:

假设有一个串0110100,总共m=4个0, n=3个1,在k==3时,1的个数超过了0,那么前k-1位0和1的数量一定是相等的,现在将k位后面的数字(不包括第k位),0变成1,1变成0;则字符串变成了0111011,这样字符串看似在变,其实有一个变量是没有改变的

所有不符合条件的01串,改变之后,0的个数一定为n-1,1的个数一定为m+1,

因为改变过程中,(前k-1位的01个数是相同的(跟0变1,1变0是等价的),k+1位后面0变1,1变0,那么相当于所有的0,都变成了1)

那么1的个数为m+1m表示原来0的个数,1表示第k位的那个1。

那么0的个数为n-1n表示原来1的个数,-1表示第k位的那个1没有变成0。

任何一个不符合要求的01串都可以变成由n-1个0和m+1个1组成的01串(个数是相等的,可以相互转换得到)。

由n-1个0和m+1个1组成的任意的01串有C(n-1+m+1,n-1)=C(n+m,n-1)个,

所以F(m,n)=C(n+m,n)-C(n+m,n-1) ;

猜你喜欢

转载自blog.csdn.net/xiangaccepted/article/details/81146974
今日推荐