转载自Math173

卡特兰(Catalan)数来源于卡特兰解决凸计数的映射方法的典范.为了便于读者理解,我们先介绍一些卡特兰问题的简单变形,再介绍卡特兰问题及其解法.

 

问题一    进出栈

栈是一种先进后出(FILO,First In Last Out)的数据结构.如图1,1,2,3,4顺序进栈,那么一种可能的进出栈顺序是

1In→2In→2Out→3In→4In→4Out→3Out→1Out,
于是出栈序列为1,3,4,2.

 

卡特兰数 — 计数的映射方法的伟大胜利

图1    栈是先进后出的数据结构

那么一个足够大的栈的进栈序列为1,2,3,⋯,n时有多少个不同的出栈序列?

    首先,每一种进出栈的顺序都与出栈序列一一对应.也就是说,如果我们用1,3,4,2与进出栈顺序

+1,+1,−1,+1,+1,−1,−1,−1,
是对应的.

 

那么对C2nn种吗?

答案是否定的,这是因为出栈的前提是有进栈动作,于是要求每个排列中的前若干项和均不为负数,也就是说排列

1,−1,−1,1,1,−1,−1,1
是无效的.

 

那么无效的排列到底有多少呢?

考虑N.

显然,这个M中的一个排列).

因此无效的排列共有C2nn−1个.

综上,所有不同的出栈序列总数为1n+1C2nn.

进出栈问题的一个简单变形就是二叉树问题:

n+1个叶子的满二叉树的个数,如图8.

卡特兰数 — 计数的映射方法的伟大胜利

图8    n+1个叶子的满二叉树的个数问题

事实上,向左记为−1,按照向左优先的原则,从根节点开始遍历.例如第一个图记为

+1,+1,+1,−1,−1,−1,
于是由卡特兰数的含义可得满二叉树的个数为Cn.

 

 问题二    电影购票

电影票每张m+n个人排成一列,顺序购票,使得无需因为等待找零而耽误时间?

    我们给进出栈问题一个几何模型:

如图2,在n×n的方格地图中,从一个角到另一个角(成对角线),不跨越对角线的路径数.

卡特兰数 — 计数的映射方法的伟大胜利

图2   方格地图中的受限路径数

只要将向右记为−1,就转化成了问题一.

利用这个模型,我们解决这个卡特兰问题的变形问题,并顺便给进出栈问题的解法一个几何解释.

如图3,在一个y=x下方(包括边界)的路径条数.

卡特兰数 — 计数的映射方法的伟大胜利

图3    矩形地图中的受限路径数

从反面考虑问题.设O→P的路径组成的集合,如图4.

卡特兰数 — 计数的映射方法的伟大胜利

图4    犯规的路径

如图5,利用对称可以将P′的路径的一个一一映射.

卡特兰数 — 计数的映射方法的伟大胜利

图5    利用对称建立对应关系

因此

card(M)=card(N)=Cm+nn−1,
于是所求的排列数为
Cm+nn−Cm+nn−1.
特别的,当m=n时有
Cm+nn−Cm+nn−1=C2nn−C2nn−1=1n+1C2nn,
即卡特兰数.

 

 问题三    圆内连弦

如图6,圆周上有n条弦,求不同的连法总数.

卡特兰数 — 计数的映射方法的伟大胜利

图6   圆内连弦问题

    为了解决这个问题,我们重新解释卡特兰数的推导方式.先解决下面的辅助问题:

圆周上有+1”的点作为起点,当顺时针沿圆周前进时将所遇到的点(包括起点)上标的数相加得到的和始终为正数,就称这种标记法是好标记法.求好标记法的总数(注意考虑圆排列).

辅助问题的解    对于任何一种标记法,我们将顺时针相邻的“+1”的点,显然此时标记法为好的.因此所有的标记法都是好标记法,显然其数目为

12n+1C2n+1n=1n+1C2nn.

 

问题的解    通过对辅助问题的进一步探索可知,每一种将圆周上n条弦.这样我们就建立了从好标记法到弦的连法的单射.

反过来,如果我们有了一种弦的连法,就可以从某条弦的端点出发顺时针前进,对每条弦的两个端点都是先遇到的端点标上“+1”的点.这样我们就建立了从弦的连法到好标记法的单射.

综上,所求的不同连法数为1n+1C2nn.

问题四   凸多边形的剖分(卡特兰问题)

求凸n−1条对角线分割为互不重叠的三角形的分法总数.

卡特兰数 — 计数的映射方法的伟大胜利

图7    凸n+2边形的所有剖分方法总数

    先介绍两个关于卡特兰数−1分别看成左括号和右括号,我们得到

引理一    由Cn.

比如n=3时,所有合法的括号表达式有

((())),(())(),()(()),()()(),(()()),
5个.

 

考虑a,b,c,d,然后在第一个数下设一个指针,将一个左括号看成是指针右移一格,而将右括号看成是将指针当前指向的数与其左侧的一个数作乘积,并删除左侧的那个数,那么当执行完括号表达式,就得到了一种可能的相乘顺序,如图8.

卡特兰数 — 计数的映射方法的伟大胜利

图8  合法括号表达式与可能的相乘顺序的对应

这样我们就从引理一出发得到了

引理二    Cn.

    这样也是RPN模式的计算机的工作模式,可以无需括号完成计算,从而节省按键的次数.这种计算器在财务计算中大量使用,如图.

卡特兰数 — 计数的映射方法的伟大胜利

图9 Mac OS X下计算器的PRN模式

接下来解决卡特兰问题,用1的边的起点(按逆时针方向)开始按未标记的对角线均为向外标记方向,如图10.

卡特兰数 — 计数的映射方法的伟大胜利

图10  分别标记边和对角线

进而,逆时针读图,将出的箭头读为左括号,进的箭头读为右括号,就得到了剖分方式与连乘顺序的对应.图10中的两个图对应的连乘顺序表达式分别为

1((2(34))5)6,(1(23))(45)6,
抛开Cn.

 

卡特兰数的性质

卡特兰数有一些优美的性质,如

通项公式一    Cn=1n+1C2nn=C2nn−C2nn−1;

通项公式二    Cn=1n+1∑i=0n(Cni)2;

递推公式一    C0=1;

递推公式二    C0=1;

增长速度    ΔCn∼4nn32π.

 

由卡特兰问题以及其各种变形很容易推导卡特兰数的递推公式.相应的,我们也可以利用递推公式二来发现和证明某些卡特兰问题的变形,比如:

探索用n的阶梯图形的方法数,如图11.

卡特兰数 — 计数的映射方法的伟大胜利

图11   阶梯图形的填充

    把包含左上角的矩形去掉,就很容易由递推公式二推得所有填充方法数就是卡特兰数Cn了.

相关文章:

猜你喜欢
  • 2021-12-20
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
相关资源
相似解决方案