Catalan Numbers(卡特兰数)

 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

XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY

    模型解释:把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

百度百科:http://baike.baidu.com/view/2499752.htm

http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html

相关文章
相关标签/搜索