正文

catalan数在数据结构中的应用 2007-04-03 17:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiaoxiaofeng/24579.html

分享到:

catalan数在数据结构中的应用 什么是catalan数?在网上找了n久,各种关于catalan数列的资料都残缺不堪,弄了半天才理解什么是catalan数。所以干脆自己梳理一番。原理:令h(1)=1,catalan数满足递归式:h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2)该递推关系的解为:h(n)=c(2n-2,n-1)/n (n=1,2,3,...) 我并不关心其解是怎么求出来的,我只想知道怎么用catalan数分析问题。我总结了一下,最典型的三类应用:(实质上却都一样,无非是递归等式的应用,就看你能不能分解问题写出递归式了)1.括号化问题。 矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种) 2.出栈次序问题。一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列? 类似:有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈) 3.将多边行划分为三角形问题。将一个凸多边形区域分成三角形区域的方法数? 类似:一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果他从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路? 类似:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数? 不过下面这个问题似乎不好归类,它怎么来应用这个catalan递归方程呢?你说说:n个结点可构造多少个不同的二叉树? 看的人倒是不少,愿意想一想的倒是不多,唉 h(n)=c(2n-2,n-1)/n 是什么意思哈 C代表什么呀 c代表组合数,即2n-2个体种选取n-1个的种类 re: catalan数在数据结构中的应用 2006-11-10 13:19 不过好像有些问题还不是那么好处理呵 例如“有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈)”这个问题; 到底该如何利用类推法呢? 假如用f(x)来表示x个人时的情况, 那么一个人时f(1)=1; 两个人时f(2)=2f(1)+1; 三个人时f(3)=3f(1)+f(2)f(1)+f(1)f(2); 四个人时f(4)=4f(1)+2f(3)f(1)+f(2)f(2)+f(1)f(2)f(1); …… 这样貌似还是有点不好处理呀……    re: catalan数在数据结构中的应用 2006-11-10 13:39 @江水兽 你是说这么递归解这一堆递归式吧. 大可不必, 我们只需要发现一个问题满足catalan数列的递归式,然后直接就可以得到解 f(n)=h(n)=c(2n-2,n-1)/n 有时候还要看具体问题,可能最终的解是h(n+1)或h(n-1)或h(2n)等等  

阅读(96) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册