Sandomhet

Catalan Number

Interesting equations and findings about Catalan Number

Tue, Dec 31, 2024 2 min read

Catalan Number

与斐波那契数列类似,并没有什么特殊的含义,只是用来解决某些问题的模型。

形如:1、1、2、5、14、42、132……1、1、2、5、14、42、132……

公式

Catn=∑i=1nCati−1Catn−iCatn=4n−2n+1Catn−1Catn=C2nn−C2nn−1=C2nnn+1Cat_n=\sum\limits_{i=1}^{n}Cat_{i-1}Cat_{n-i} \\ Cat_n=\frac{4n-2}{n+1}Cat_{n-1} \\ Cat_n=C_{2n}^{n}-C_{2n}^{n-1}=\frac{C_{2n}^{n}}{n+1} \\

例题与解释

1.经典的网格路径问题

从(0,0)(0, 0)走到(n,m)(n, m),只能向上或向右走,且不穿过y=xy=x这条线的方案数。显然随便走的话方案数就是Cn+mnC_{n+m}^{n}(一共走n+mn+m 步,其中有nn步向右走)。考虑每一条不合法路径,也就是穿过了y=xy=x,即触碰到了y=x+1y=x+1,将第一次触碰到y=x+1y=x+1的位置记作dd ,那么把dd之后的路径沿y=x+1y=x+1对称,就得到了一条从(0,0)(0,0)到(m−1,n+1)(m-1,n+1) 的路径。可以发现每一条不合法路径都唯一对应一条从(0,0)(0,0)到(m−1,n+1)(m-1,n+1)的路径,这是一个双射关系,方案数为Cn+mn+1C_{n+m}^{n+1} ,最后答案为Cn+mn−Cn+mn+1C_{n+m}^{n}-C_{n+m}^{n+1}。特别的,当n=mn=m时,就是卡特兰数。

2.1、-1序列

将nn个11与nn个−1-1排列,使得任意位置的前缀和大于等于00。对于不合法的方案建立双射关系:一定存在一个位置前缀和为−1-1 ,假设前面有pp个11,p+1p+1个−1-1,那么后面有n−pn-p个11,n−p−1n-p-1个−1-1,将1、−11、-1取反,此时后面有n−p−1n-p-1个−1-1,n−pn-p个11 ,总体就是有n−1n-1个11和n+1n+1个−1-1 组成的排列。同理,我们可以把此反向映射回去,得到双射关系。方案数也就是C2nn−C2nn−1C_{2n}^{n}-C_{2n}^{n-1}。

3.括号序列

左括号的数量始终大于等于右括号,即合法的括号序列。把左右括号看做1、−11、-1,同上。

4.进出栈问题

1……N1……N依次入栈,出栈顺序的方案数。考虑11的顺序: 1.11入栈; 2.2……k2……k按照某种次序出栈; 3.11出栈; 4.k+1……nk+1……n按照某种次序出栈。 写成递推式就表示为∑i=1nfi−1fn−i\sum\limits_{i=1}^{n}f_{i-1}f_{n-i},就是卡特兰数。

5.阶梯的矩形划分(树屋阶梯)。

image

一个阶梯被若干个矩形划分的方案数。 发现nn个角不可能处于同一个矩形,那么枚举nn个角哪一个与左下角的方块在一个矩形内,那么上方还剩下i−1i-1个角,下方还剩下n−in-i 个角,则递推式如上。

6.二叉树的构成问题(凸多边形的三角划分)

枚举左子树的大小,得到递推式fn=f0fn−1+f1fn−2……fn−1f0f_n=f_0f_{n-1}+f_1f_{n-2}……f_{n-1}f_0。

7.不相交弦

在一个圆上有2n2n个点,两两配对,所得的弦彼此不相交,在圆上任选两个点连接,把圆分成两部分,左侧2(i−1)2(i-1)个点,右侧2(n−i)2(n-i) 个点,得到递推式。

int catalan(int n) {
    int res = 1;
    for (int i = 0; i < n; i++)
        res = res * (2 * (2 * i + 1)) / (i + 2);
    return res;
}
Search

Loading search…