zoukankan      html  css  js  c++  java
  • Catalan数

    Catalan数

    预备知识:

    $ $

    对角线剖分:

    n边形的剖分

    (A_1 A_2 A_3 ··· A_n)是凸n边形.用(n-3)条(除端点外)无公共点的对角线,可以将它剖分为三角形,这样的剖分我们称它为对角线剖分.显然,对角线剖分的方法未必只有一种.例如上图,6边形的对角线剖分共有14种.我们将凸n边形的对角线剖分的种数,记为(T_n-2).容易知道,

    $$ T_2 =2,T_3 =5,T_4 =14 $$

    为了能够得到统一的通项公式,通常约定,

    $$ T_0 = T_1 =1 $$

    $ T_n $通常称为Catalan数,由大神Eugene Charles Catalan命名.据考证,Catalan数最早是由L. Eular于1753年在解决凸包划分成三角形问题的时候提出的(也有说法称是蒙古的明安图在1730年提出的).然而Eugen Otto Erwin Netto在他的论文中将该数归功于Catalan.

    通项公式:

    为了深度了解Catalan数的性质,我们希望求出(T_n)的公式.

    只要稍微研究一下,很容易想到(T_n)的递推式.如上图,考虑以(n)边形的第(1)条边引出的三角形(红色三角形).这个三角形将(n)边形分成两个多边形,设其中一个为(k+1)边形(为什么不设为(k)边形?),则另一个为(n-k+1)边形.因此,我们得到

    $$ T_{n-2}=sum_{k=1}^n T_{k-1} ullet T_{n-k-1} $$

    (这里我们用到了$ T_0 = T_1 =1 $的规定)

    额,好像略过于复杂了.很多人肯定都知道实际上(T_n=frac{1}{n+1} C_{2n}^n),可以验证这个通项满足上式.然而我们这里还不知道这个事实,于是我们在这里遇到了瓶颈,好像没办法继续下去了.先别着急,我们来看看下面的问题.

    添括号

    如果(*)是一个运算,且(*)不满足结合律,那么,表达式 $ a_1 * (a_2 * a_3) $ 与 $ (a_1 * a_2) * a_3 $ 有不同的值.

    我们想知道,在表达式

    $$ a_1 * a_2 * a_3 * ··· * a_n $$

    中,适当增加(n-2)个括号,可以得出多少个不同的结果.

    事实上,共有(T_{n-1})种不同的结果.为了证明这个结论,想到可以构造一个从对角线分割的方法到添括号的方法的一一映射(f).这个(f)定义如下:

    将凸n+1边形的前(n)条边顺次编号(a_1,a_2,···,a_n),剩下那条边编号为0.在对角线剖分中,对角线(l)将多边形分成两个部分.在不含边(0)的那一部分中,有两条边(a_i)(a_j)(l)有公共点,我们就在表达式中添加一对从(a_i)(a_j)的括号.于是,这(n-2)条对角线对应了(n-2)对互不相同的括号.显然,这(n-2)对括号是合法的.于是,只需证明(f)一一映射即可.

    (f)是单射:因为在剖分(x eq x')时,(x)至少有一条对角线不在(x')中出现,所以在(f(x))中有一处括号与(f(x'))不同,即(f(x) eq f(x')).

    (f)是满射:若增添了(n-2)对括号后得到了(y),对于从(a_i)(a_j)的一对括号,在凸(n)边形中(a_i)的始点和(a_j)的终点间连一条对角线.这样,一个添括号的方法(y)可以唯一对应地产生一个对角线剖分(x),并且(f(x)=y).

    至此,我们顺利地证明了添括号的方法恰好有(T_{n-1})种,于是要得到(T_n)的公式,只需求出添括号的方法数.然而,求出这个我们还需要费些周章.

    黑白棋子

    (2n)个棋子排成一列,其中(n)个黑棋子,(n)个白棋子,且从左往右数过来数到的黑棋子个数不多于白棋子个数.求这样满足要求的排列的个数.

    设排列的个数为(A_n)只需要稍微枚举一下,很容易发现

    $ A_1=1 $ $ A_2=2 $ $ A_3=5 $ $ A_4=14 $

    发现正好与(T_n)相同!于是我们猜测(A_n=T_n).为了证明这个结论,我们还是需要构造一个一一映射(f):

    Whitworth路线

    我们知道,从原点((0,0))沿坐标网走到格点((n,n))的路线共有(C_{2n}^n)条.在这(C_{2n}^n)条路线中,不在直线(y=x)上方出现的路线称为Whitworth路线,简称W线.对于一条W线,我们通常将路线中向东走一个单位长度表示为"E",向北走一个单位长度表示为"N".

    如上图,就是一个(n=3)时的W线,可以表示成

    $$ ENEENN $$

    那么,共有多少条Whitworth路线?

    显然,从左往右

  • 相关阅读:
    LeetCode 345. Reverse Vowels of a String 题解
    LeetCode 344. Reverse String 题解
    LeetCode 27. Remove Element 题解
    LeetCode 61. Rotate List 题解
    LeetCode 19.Remove Nth Node From End of List 题解
    Android耗电量
    Android 使用adb查看和修改电池信息
    Android AOP AspectJ 插桩
    Flask相关用法
    Monkey日志信息的11种Event percentage
  • 原文地址:https://www.cnblogs.com/Feng230/p/10696731.html
Copyright © 2011-2022 走看看