Catalan Numbers 是组合数学中一种应用很广的数学模型,今天又复习了一遍。html
着重体会了Catalan Numbers的本质约束,求解推导过程,常见的符合Catalan Numbers的模型。ide
1,Catalan Numbers的本质约束svg
我以为碰到一个模型要判别是否能用Catalan Numbers这种递推模型来求解,不能光记住那些常见的模型,虽然记忆有助于咱们理解。我想了想Catalan Numbers最本质的约束,最终的得出了一个结论。那就是Catalan Numbers对应的模型必定与一个从1到n的天然数序列的入栈出栈序列同构(对应)。仔细思考一下出栈入栈序列的限制,能够分为如下几点:spa
a,入栈必定要在出栈前,且入栈时必定是从1-n的顺序。orm
b,入栈只能一次。htm
c,入栈后必定要出栈。即必定要匹配。blog
2,符合Catalan递推模型的解释图片
a, dyck wordip
模型叙述:Cn表示长度2n的dyck word的个数。Dyck word是一个有n个X和n个Y组成的字串,且全部的部分字串皆知足X的个数大于等于Y的个数。如下为长度为6的dyck words:get
模型解释:把n个X看作1——n的天然数,Y看作#1——#n的序列,其中#i表示i出栈。例如XXXYYY,表示123#3#2#1。也就是X看作入栈,Y看作出栈便可。
b, 买票找零
模型叙述:有2n我的排成一行进入剧场。入场费5元。其中只有n我的有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?
模型解释:将持5元者到达视做将5元入栈,持10元者到达视做使栈中某5元出栈
C,括号的合法性
模型叙述:给出n对括号(),问有多少种合法的组合。
模型解释:将左括号看作入栈,右括号看作出栈,便可。
d,二叉树的个数
模型叙述:问含有n+1个叶子的二叉树的个数。
模型解释:将左孩子看作左括号,右孩子看作右括号,这里指的孩子包括分支节点和叶子节点。而后先序遍历即对应C。 C(n)。
e,满二叉树的个数
同上。
f, 单调路径
模型叙述:查看图片http://en.wikipedia.org/wiki/File:Catalan_number_4x4_grid_example.svg
一个单调路径从格点左下角出发,在格点右上角结束,每一步均为向上或向右。计算这种路径的个数。
模型解释:将向右看作入栈,将向左看作出栈。
3,困惑
对于凸三角形划分和阶梯填充,我仍是找不到很好的切入点,利用本身思考的这个结论来解释。不过我以为这种结论对于一些浅显模型的解释仍是很直白的,很容易发现的。
4,参考资料
维基百科:http://en.wikipedia.org/wiki/Catalan_number