栈的数学性质(Catalan函数)

当n个编号元素以某种顺序进栈,并可在任意时刻出栈,所获得的编号元素排列的数目N恰好满足Catalan函数的计算,即N=C(2n,n)/(n+1)。

 

卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名。

 

卡特兰数的前几项:1,1,2,5,14,42,132,429,1430,4862…

 

卡特兰数原理:

h(0)=1,h(1)=1catalan数满足递推式:

h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)

例如:h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2

h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5

另类递推式  

h(n)=h(n-1)*(4*n-2)/(n+1);

递推关系的解为:

h(n)=C(2n,n)/(n+1) (n=0,1,2,...)

递推关系的另类解为:

h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)


卡特兰数应用之出栈次序:

问题:一个栈的进栈序列为1,2,3,…,n。有多少个不同的出栈序列?

分析:设f(n) = 序列个数为n的出栈序列种数。设最后出栈的元素为k。即在k进栈之前,元素1,2,…,k-1已经出栈,出栈序列数为f(k-1)。在k进栈后,元素k+1,k+2,…,n已经进栈后全部出栈。所以元素k+1,k+2,…,n出栈序列种数为f(n-k)。由于比k小和比k大的值入栈出栈情况是相互独立的,此处可用乘法原则,f(n-k)*f(k-1)种,求和便是Catalan递归式。

解决:f(n) = f(n-k)*f(k-1),其中k=1,2,3,…,n  所以f(n) = h(n)= C(2n,n)/(n+1) = c(2n,n)-c(2n,n+1)(n=0,1,2,3,…,n)


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值