Catalan 数

\(Catalan\) 数列

​ 给定\(n\)\(0\)\(n\)\(1\),它们按照某种顺序排成长度为\(2n\)的序列,满足任意前缀中\(0\)的个数都不少于\(1\)的个数的序列的数量即为\(Catalan\)数列。

证明:

​ 令\(n\)\(0\)\(n\)\(0\)随意排成一个长度为\(2n\)的序列\(s\),若\(s\)不满足任意前缀和中\(0\)的个数不少于\(1\)的个数,则存在一个最小的位置\(2p+1\),使得\(s\)[\(1,2p+1\)]中有\(p\)\(0\)\(p+1\)\(1\)。而把\(s\)[\(2p+2\),\(2n\) ]中的数都取反,包含\(n-p-1\)\(0\)\(n-p\)\(1\)。于是,我们得到了\(n-1\)\(0\)\(n+1\)\(1\)排成的序列。

​ 同理,令\(n-1\)\(0\)\(n+1\)\(1\)随意排成一个长度为\(2n\)的序列\(B\)。也必定存在一个最小的位置\(2p+1\),使得\(s[1,2p+1]\)中有\(p\)\(0\)\(p+1\)\(1\),把后面的序列取反,就得到了\(n\)\(0\)\(n\)\(1\)组成的存在一个前缀\(0\)\(1\)多的序列。

​ 所以,以下两种序列的数量其实是一样的:

  1. \(n\)\(0\),\(n\)\(1\)组成的存在一个前缀\(0\)\(1\)多的序列。
  2. \(n-1\)个0,\(n+1\)\(1\)组成的序列。

所以,用所有情况减去不合法的情况就得到了卡特兰数。

推论

​ 以下问题都与\(Catalan\)数有关

1. 括号匹配的合法括号序列数量

2.  合法出栈序列数量
3.  $n$ 个节点构成的不同二叉树的数量
4.  平面直角坐标系中,每一步只能向上或向右走,从$(0,0)$到$(n,n)$并且除了两个端点外不接触直线$y=x$的路线数量为$2Cat_{n-1}$。

猜你喜欢

转载自www.cnblogs.com/doublety/p/11778734.html