当前位置: 华文星空 > 知识

卡特兰(Catalan)数

2022-08-20知识

本文使用 Zhihu On VSCode 创作并发布

  • 卡特兰(Catalan )数
  • 卡特兰数经常会在算法题中出现,是组合数学中的一个特别重要的数.

  • 定义: 令h(0)=h(1)=1 ,Catalan 数满足递归式:
  • \begin{aligned}h(n)&=\sum\limits_{i=0}^{n-1}h(i)\cdot h(n-i-1)\\&=h(0)\cdot h(n-1)+h(1)\cdot h(n-2)+\cdots+h(n-1)\cdot h(0).\end{aligned}\\

    则Catalan 数的解为h(n)=\frac{1}{n+1}C_{2n}^n .

  • 证明: 利用母函数(发生函数)
  • 令H(x)=h(0)+h(1)x+h(2)x^2+\cdots+h(n)x^n+\cdots ,则递归公式左边就是H(x) 的n 次项系数,右边是H^2(x) 的n-1 次项系数,所以我们有

    H(x)=xH^2(x)+h(0)=xH^2(x)+1.

    解得H(x)=\frac{1\pm\sqrt{1-4x}}{2x} .

    在上一篇文章中,由广义牛顿二项式定理得\sqrt{1-4x}=\sum\limits_{n=0}^{\infty}-\frac{1}{2n-1}C_{2n}^nx^n.

    取H(x)=\frac{1-\sqrt{1-4x}}{2x} ,则x^n 系数为\frac{1}{2}\frac{1}{2n+1}C_{2n+2}^{n+1}=\frac{1}{n+1}C_{2n}^n .

    这样就得到Catalan 数h(n)=\frac{1}{n+1}C_{2n}^n .

  • 应用
  • 在邓俊辉【C++数据结构】「二叉搜索树」一节中,由一组共n 个互异节点组成的二叉搜索树,总共有\frac{1}{n+1}C_{2n}^n=\frac{(2n)!}{n!(n+1)!} 棵.