zoukankan      html  css  js  c++  java
  • Catalan Numbers

    递推关系:$C_n=C_0C_{n-1}+C_1C_{n-2}+\cdots+C_{n-2}C_{1}+C_{n-1}C_{0}$

    其中,$C_1=1,C_0=1$

    显示公式:$C_n=\frac{1}{n+1}C_{2n}^{n}$


    证明 $C_n=\frac{1}{n+1}C_{2n}^{n}$


    定理1:${-1/2 \choose n}=\frac{{2n \choose n}}{(-4)^n}$

    证明:用数学归纳法对 n 归纳。
    当 $n=1$ 时,${-1/2 \choose 1}=\frac{{2 \choose 1}}{-4}=-\frac{1}{2}$。
    假设 $n=k$ 时成立。
    当 $n=k+1$ 时,${-1/2 \choose k+1}=\frac{\left(\frac{-1}{2}\right)\times \cdots \times \left(\frac{-1}{2}-k+1\right) \times \left(\frac{-1}{2}-k\right)}{(k+1)!}=\frac{{2k \choose k}}{(-4)^k} \times \frac{-k-1/2}{k+1}=\frac{(2k) \times \cdots \times (k+1)}{(-4)^k \times (k+1)!} \times (-k-1/2)=\frac{(2k) \times \cdots \times (k+2)}{(-4)^{k+1}\times (k+1)!} \times 4(-k-1/2)(k+1)=\frac{C_{2k+2}^{k+1}}{(-4)^{k+1}}$。

    定理2:$(1-4x)^{-1/2}$ 的展开式中,$x^n$ 的系数是 ${2n \choose n}$

    证明:$(1-4x)^{-1/2}=\sum_{k=0}^{\infty}{-1/2 \choose k}(-4x)^k=\sum_{k=0}^{\infty}{\frac{{2k \choose k}}{(-4)^k}}(-4x)^k=\sum_{k=0}^{\infty}{2k \choose k}x^k$。

    定理3:Catalan Numbers 的生成函数 $G(x)=\frac{1-\sqrt{1-4x}}{2x}$

    证明:$G(x)=\sum_{k=0}^{\infty}{C_k x^k}$,因此 $G(x)^2=\sum_{k=0}^{\infty}(\sum_{j=0}^{k}C_jC_{k-j}) x^k=\sum_{k=0}^{\infty}C_{k+1}x^k$,因此 $xG(x)^2-G(x)+1=0$,因此 $G(x)=\frac{1-\sqrt{1-4x}}{2x}$ 或 $G(x)=\frac{1+\sqrt{1-4x}}{2x}$,因为 $G(x)$ 的每个系数都是大于0,因此 $G(x)=\frac{1-\sqrt{1-4x}}{2x}$。

    定理4:$G(x)=\sum_{n=0}^{\infty}{\frac{1}{n+1}{2n \choose n}x^n}$,$C_n=\frac{1}{n+1}C_{2n}^{n}$

    证明
    $\int_0^x (1-4t)^{-1/2} dt=-\frac{1}{4} \int_0^x (1-4t)^{-1/2} d(1-4t)=-\frac{1}{2}((1-4x)^{1/2}-1)=-\frac{(1-4x)^{1/2}-1}{2}=xG(x)=\sum_{k=0}^{\infty} C_k x^{k+1}$

    $\int_0^x (1-4t)^{-1/2} dt = \int_0^x \sum_{k=0}^{\infty}{2k \choose k}t^k dt=\sum_{k=0}^{\infty}\frac{1}{k+1}{2k \choose k}x^{k+1}$
    所以:$C_k=\frac{1}{k+1}{2k \choose k}$

    应用

    1、矩阵链乘
    Find a recurrence relation for $C_n$, the numbers of ways to parenthesize the product of n+1 numbers $x_0*x_1*x_2\cdots*x_n$ to specify the order of multiplication.

    2、出栈次序
    给定一个入栈次序:$1,2,3,\cdots,n$,问有多少种出栈次序?
    举个例子:如果入栈次序为1,2,则我们可以1进入,1出栈,2入栈,2出栈,这样出栈序列为1,2。
    设入栈记为1,出栈记为0,则入栈+出栈操作能够转化为长度为2n的01序列,而我们又可以把他转化为“矩阵链乘”问题,即1为左括号,0为右括号。

    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    网页的资源加载优化
    Object.prototype.toString的应用
    判断一个字符串中出现次数最多的字符,并统计字数
    toString()和toLocaleString()有什么区别
    响应式网站布局要适应的当下主流手机屏幕的各个版本的分辨率有哪些(media query)
    handlebars用法
    算符优先分析及其简单代码实现
    OpenGL:使用顶点数组法绘制正六面体
    算法设计:两种快速排序代码实现
    c#简易学生信息管理系统
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3114029.html
Copyright © 2011-2022 走看看