zoukankan      html  css  js  c++  java
  • Asymptotic I Catalan Number

    卡特兰数出现在许多计数问题中。

    常见的例子有:$n$ 个节点的有序二叉树,$2n$ 个括号构成的合法括号序列。

    在上面所举的两个例子中,很容易看出卡特兰数满足递推:
    $$
    C_{n+1} = sum_{i = 0}^{n} C_i C_{n-i }, quad(n ge 1)
    $$
    $C_0 = 1$

    卡特兰数的闭形式,亦即上述递推式的解为

    $$
    C_n = frac{1}{n+1} inom{2n}{n} = frac{(2n)!}{n!(n+1)!}
    $$

    曾经我对于如何推导这个式子很感兴趣,实际上推导过程很容易搜到,维基百科上就有。
    现在我摘录一种最常见的借助生成函数的证明,以备查看。

    定义 $C_n$ 的生成函数
    $$
    c(x) = sum_{n = 0}^{infty} C_n x^n
    $$

    为了利用上述递推关系,我们考虑 $c(x)^2$ 的幂级数展开式中 $x^n$ 项的系数
    egin{aligned}
    c(x)^2 &= sum_{n = 0}^infty sum_{i = 0}^{n} C_i C_{n-i} x^n \
    &= sum_{n = 0}^infty C_{n+1} x^n
    end{aligned}
    注意到 $x sum_{n = 0}^infty C_{n+1} x^n = sum_{n = 0}^infty C_{n+1} x^{n+1} = sum_{n = 1}^infty C_{n} x^{n}$
    于是有
    egin{equation}
    c(x) = 1 + xc(x)^2 label{E:1}
    end{equation}
    eqref{E:1} 是关于 $c(x)$ 的一元二次方程,解之即得 $c(x)$ 的闭形式,再将此闭形式展开即得 $C_n$ 的表达式。

    解得
    $$ c(x) = frac{1 pm sqrt{1 - 4x}} {2x} $$
    注意到 $c(x)$ 在 $x = 0$ 处的极限应为 $0$,据此可知上式中分母上应取负号,即
    egin{equation}
    c(x) = frac{1 - sqrt{1 - 4x}} {2x} label{E:2}
    end{equation}
    现在问题归结为如何将 eqref{E:2} 展成幂级数。

    要解决这个问题,我们需要知道一个东西,那就是二项式定理的推广形式。
    回忆我们所学过的二项式定理,$(x + y)^n$ 中的指数 $n$ 必须是非负整数。先哲牛顿推广了初等的二项式定理,他证明了指数可以为任意实数 $r$,二项式定理同样成立。即有
    $$(x+y)^r = sum_{k = 0}^{infty} inom{r}{k} x^k y ^{r-k} $$
    其中
    $$inom{r}{k} = frac{r (r-1) (r-2) dots (r - k + 1)} {k!}$$
    $r (r-1) (r-2) dots (r - k + 1)$ 也称作「$r$ 的降 $k$ 阶乘」,记作 $(r)_k$,这种记法称作 Pochhammer 符号。

    二项式定理的一般形式在物理上很有用处,我念本科时不知道这么个好东西,常常看不懂书上的一些推导过程。

    借助推广的二项式定理,我们很容易写出 $sqrt{1 - 4x}$ 的展开式
    egin{aligned}
    sqrt{1 - 4x} &= (1 - 4x)^{1/2} \
    &= sum_{k = 0}^{infty}inom{1/2}{k} (-4x)^k \
    &= sum_{k = 0}^{infty} frac{(-1){k-1}(2k-3)!!}{2k k!} (-4x)^k \
    &= sum_{k = 0}^{infty} frac{(-1){k-1}}{4k (2k -1) }frac{2^k (2k-1)!!}{k!} (-4x)^k \
    &= sum_{k = 0}^{infty} frac{(-1){k-1}}{4k (2k -1) } inom{2k}{k} (-4x)^k \
    &= sum_{k = 0}^{infty} frac{-1}{ 2k -1 } inom{2k}{k} x^k
    end{aligned}
    进而
    egin{aligned}
    1 - sqrt{1 - 4x} &= sum_{k = 1}^{infty} frac{1}{ 2k -1 } inom{2k}{k} x^k \
    &= sum_{k = 0}^{infty} frac{1}{ 2k + 1 } inom{2k+2}{k+1} x^{k+1} \
    &= sum_{k = 0}^{infty} frac{2}{k+1} inom{2k}{k} x^{k+1}
    end{aligned}
    从而
    $$ frac{1 - sqrt{1 - 4x}} {2x} = sum_{k = 0}^{infty} frac{1}{ k+1 } inom{2k}{k} x^k $$
    因此
    $$ C_n = frac{1}{n+1} inom{2n}{n} $$

    补充

    $C_n$ 还可写成
    $$ C_n = inom{2n}{n} - inom{2n}{n + 1} $$
    另外,$C_n$ 的相邻两项满足
    $$ C_{n+1} = frac{2(2n+1)}{n + 2} C_n $$

  • 相关阅读:
    linux PCI 接口
    Linux 内核链表头数据结构
    Linux内核链表
    spawn-fcgi原理及源代码分析
    TRIZ系列-创新原理-17-转变到新维度原理
    《转》ceilometer的数据採集机制入门
    git配置文件读取顺序
    Android Studio 使用感受 错误解决
    scikit-learn:在实际项目中用到过的知识点(总结)
    //%f表示以十进制格式化输出浮点数 %.2f
  • 原文地址:https://www.cnblogs.com/Patt/p/10454746.html
Copyright © 2011-2022 走看看