Catalan数列

合集下载

组合数学-第十一节:Fibonacci数和Catalan数

组合数学-第十一节:Fibonacci数和Catalan数

4.5 Fibonacci 数和Catalan 数Fibonacci 数列和Catalan 数列是递推关系的典型问题,它们经常出现在组合计数问题中,而这两个数列本身的应用也十分广泛。

4.5.1 Fibonacci 数关于Fibonacci 数列的问题是一个古老的数学问题,它是由意大利著名数学家Fibonacci 于1202年提出来的。

这个问题是:把一对兔子(雌、雄各一只)在某年的开始放到围栏中,每个月这对兔子都生出一对新兔子,其中雌、雄各一只。

从第二个月开始,每对新兔子每个月也生出一对新兔子,也是雌、雄各一只。

问一年后围栏中有多少对兔子?对于1,2,n = ,令()f n 表示第n 个月开始时围栏中的兔子对数。

显然有()()11,22f f ==。

在第n 个月的开始,那些第1n -个月初已经在围栏中的兔子仍然存在,而且每对在第2n -个月初就存在的兔子将在第1n -个月生出一对新兔子,所以有()()()()()()12311,22f n f n f n n f f =-+-≥⎧⎪⎨==⎪⎩ (4.5.1)这是一个带有初值的递推关系,如果我们规定()01f =,则递推关系(4.5.1)就变成()()()()()()12201,11f n f n f n n f f =-+-≥⎧⎪⎨==⎪⎩ (4.5.2)满足递推关系(4.5.2)的数列就叫做Fibonacci 数列,它的项就叫做Fibonacci 数。

下面我们来求解这个递推关系,它的特征方程为210x x --=其特征根为12x x ==所以,通解为()121122n nf n c c ⎛⎛+=+ ⎝⎭⎝⎭代入初值来确定1c 和2c ,得到方程组12121,11122c c c +=⎧⎪⎨++=⎪⎩ 解这个方程组,得121,212cc+==所以,原递推关系的解为()()110,1,2n nf nn++=⎭⎭=Fibonacci数常出现在组合计数问题中。

五种典型的递推关系

五种典型的递推关系

五种典型的递推关系1.Fibonacci数列在所有的递推关系中,Fibonacci数列应该是最为⼤家所熟悉的。

在最基础的程序设计语⾔Logo 语⾔中,就有很多这类的题⽬。

⽽在较为复杂的Basic、Pascal、C语⾔中,Fibonacci数列类的题⽬因为解法相对容易⼀些,逐渐退出了竞赛的舞台。

可是这不等于说Fibonacci数列没有研究价值,恰恰相反,⼀些此类的题⽬还是能给我们⼀定的启发的。

数列的代表问题是由意⼤利著名数学家Fibonacci于1202年提出的“兔⼦繁殖问题”(⼜Fibonacci数列称“Fibonacci问题”)。

问题的提出:有雌雄⼀对兔⼦,假定过两个⽉便可繁殖雌雄各⼀的⼀对⼩兔⼦。

问过n个⽉后共问题有多少对兔⼦?解:设满x个⽉共有兔⼦Fx对,其中当⽉新⽣的兔⼦数⽬为Nx对。

第x-1个⽉留下的兔⼦数 解⽬设为Fx-1对。

则:Fx=Nx+ Fx-1 Nx=Fx-2 (即第x-2个⽉的所有兔⼦到第x个⽉都有繁殖能⼒) ∴ Fx=Fx-1+Fx-2 边界条件:F0=0,F1=1由上⾯的递推关系可依次得到: F2=F1+F0=1,F3=F2+F1=2,F4=F3+F2=3,F5=F4+F3=5,……。

数列常出现在⽐较简单的组合计数问题中,例如以前的竞赛中出现的“⾻牌覆盖”问Fabonacci数列题。

在优选法中,Fibonacci数列的⽤处也得到了较好的体现。

2.Hanoi塔问题问题的提出:Hanoi塔由n个⼤⼩不同的圆盘和三根⽊柱a,b,c组成。

开始时,这n个圆盘由⼤到问题⼩依次套在a柱上,如图3-11所⽰。

要求把a柱上n个圆盘按下述规则移到c柱上: (1)⼀次只能移⼀个圆盘; (2)圆盘只能在三个柱上存放; (3)在移动过程中,不允许⼤盘压⼩盘。

问将这n个盘⼦从a柱移动到c柱上,总计需要移动多少个盘次?解:设hn为n个盘⼦从a柱移到c柱所需移动的盘次。

显然,当n=1时,只需把a 柱上的盘⼦直接移动到c柱就可以了,故h1=1。

卡塔兰数公式(一)

卡塔兰数公式(一)

卡塔兰数公式(一)卡塔兰数公式什么是卡塔兰数公式?卡塔兰数公式是一种组合数学中的数列,由比利时数学家欧仁·查理·卡塔兰于19世纪提出,用于解决各种组合问题。

卡塔兰数公式在计算机科学、图论、排列组合等领域有广泛应用。

卡塔兰数的递推公式卡塔兰数的递推公式定义如下:C(0) = 1 C(n+1) = C(0)C(n) + C(1)C(n-1) + … + C(n)*C(0)其中,C(n)表示第n个卡塔兰数。

卡塔兰数的显式公式卡塔兰数的显式公式定义如下:C(n) = (2n)! / ((n+1)! * n!)卡塔兰数的应用举例1. 括号匹配问题卡塔兰数可以解决括号匹配问题。

例如,给定n对括号,求所有合法的括号排列方式。

解题思路如下:•当n=0时,合法的括号排列方式只有一种:“”•当n=1时,合法的括号排列方式有两种:“()” “”•当n=2时,合法的括号排列方式有四种:“()()” “(())”“(())” “”•当n=3时,合法的括号排列方式有十种:“((()))” “(()())”“(())()” “()(())” “()()()” “” “” “” “” “”2. 凸多边形划分问题在一个n+2边形中,选择n个不重合的对角线,将该多边形划分为n+1个三角形。

卡塔兰数可以计算出所有可能的划分方式。

例如,当n=0时,没有对角线,只有一个三角形;当n=1时,有一条对角线,可以划分出两个三角形;当n=2时,可以划分出五个三角形。

3. 二叉树的种类问题卡塔兰数可以计算出给定节点个数的二叉树的种类数。

例如,当节点个数为0时,只有一种二叉树;当节点个数为1时,也只有一种二叉树;当节点个数为2时,有二种二叉树。

总结卡塔兰数公式是一种重要的组合数学公式,可以解决各种组合问题。

从括号匹配、多边形划分到二叉树种类,卡塔兰数都有广泛的应用。

理解和应用卡塔兰数公式,可以帮助我们解决更多的组合问题。

Catalan数列探究与应用

Catalan数列探究与应用

0 1 1 1 1 1 1 1
2003-4
1 1 2 3 4 5 6 7
2 2 5 9 14 20 27
3
4
5
6
7
1 2 3 4 5 6 7
5 14 28 48 75 14 42 90
165
42
132 297 132 429 429
10
华师大二附中 高一(1)班 戴明劼
联想杨辉三角,斜置式如下表 其表达式为
Catalan数列 数列 探究与应用
Catalan数阵f (i, j)的通项公式
2003-4 华师大二附中 高一(1)班 戴明劼 9
求: Catalan数阵 f ( i, j ) = ? Catalan数阵 首先观察Catalan数阵的结构,见下表 首先观察Catalan数阵的结构,见下表
i j
Catalan数列 数列 探究与应用
2003-4 华师大二附中 高一(1)班 戴明劼 3
研究思路 综合应用已学过的(中学)知识 着重研究形成规律,内在结构与性质、特点 深入揭示其本质,为应用打下更坚实的基础 研究目的 探索数学的无穷奥秘 真正做到知其然、知其所以然; 提高综合运用已有知识 解决未遇到过的难题的能力; 期望能在方法上、或概念上、或应用上 能对Catalan数的研究做出一些贡献。
1 0 0 0 0 0 0 0
2
3
4
5
6
7
1 2 3 4 5 6 7
1 1 5 1 6 21 1 7 28 84 1 8 36 120 1 9 45 华师大二附中 高一(1)班 戴明劼 165
330 495
12
1287
可发现有如下关系式:
Catalan数列 数列 探究与应用

Catalan数列

Catalan数列

Catalan数列定义1设有数列{b n}n∈N,若{b n}n∈N满足b0=1且任意n∈N,都有b n+1=b0b n+b1b n−1 +...+b n b0,则我们称数列{b n}n∈N为Catalan数列.定理1唯一存在序列{b n}n∈N使得{b n}n∈N是Catalan数列.证明(存在性)设性质P(x,y)为x是函数且存在n∈N∗使得dom(x)={0,1,..., n−1}且y=x(0)x(n−1)+x(1)x(n−2)+...+x(n−1)x0,或x不是函数或任意n∈N∗,都有dom(x)={0,1,...,n−1}且y=1.于是唯一存在二元关系G使得任意x,y,xGy当且仅当P(x,y).现在证明G是函数.事实上,设x,y1,y2满足xGy1,xGy2,则P(x,y1),P(x,y2),于是x 是函数且存在n∈N∗使得dom(x)={0,1,...,n−1}且y1=x(0)x(n−1)+x(1)x(n−2)+... +x(n−1)x0,或x不是函数或任意n∈N∗,都有dom(x)={0,1,...,n−1}且y1=1;且x是函数且存在n′∈N∗使得dom(x)={0,1,...,n′−1}且y2=x(0)x(n′−1)+x(1)x(n′−2)+...+ x(n′−1)x0,或x不是函数或任意n′∈N∗,都有dom(x)={0,1,...,n′−1}且y2=1.如果x是函数且存在n∈N∗使得dom(x)={0,1,...,n−1}且y1=x(0)x(n−1)+x(1) x(n−2)+...+x(n−1)x0,x是函数且存在n′∈N∗使得dom(x)={0,1,...,n′−1}且y2= x(0)x(n′−1)+x(1)x(n′−2)+...+x(n′−1)x0,则显然n=n′且y1=y2;如果x是函数且存在n∈N∗使得dom(x)={0,1,...,n−1}且y1=x(0)x(n−1)+x(1) x(n−2)+...+x(n−1)x0,x不是函数或任意n′∈N∗,都有dom(x)={0,1,...,n′−1}且y2=1,由于x是函数,因此任意n′∈N∗,都有dom(x)={0,1,...,n′−1},即dom(x)={0,1, ...,n−1},矛盾;如果x不是函数或任意n∈N∗,都有dom(x)={0,1,...,n−1}且y1=1,x是函数且存在n′∈N∗使得dom(x)={0,1,...,n′−1}且y2=x(0)x(n′−1)+x(1)x(n′−2)+...+x(n′−1) x0,由于x是函数,因此任意n∈N∗,都有dom(x)={0,1,...,n−1},即dom(x)={0,1,..., n′−1},矛盾;如果x不是函数或任意n∈N∗,都有dom(x)={0,1,...,n−1}且y1=1,x不是函数或任意n′∈N∗,都有dom(x)={0,1,...,n′−1}且y2=1,则y1=y2=1;因此G是函数.显然我们有dom(G)⊆V.现在设x∈V,如果x是函数且存在n∈N∗使得dom(x)={0,1,...,n−1},则令y=x(0)x(n′−1)+x(1)x(n′−2)+...+x(n′−1)x0,即得P(x,y),于是xGy,即x∈dom(G);如果x不是函数或任意n∈N∗,都有dom(x)={0,1,...,n−1},则P(x,1),于是xG1,即x∈dom(G),因此V⊆dom(G),即dom(G)=V,由于ran(G)⊆V,因此G:V→V.根据良序集上的递归定理,我们有唯一存在函数b使得dom(b)=N且任意n∈N,都有b n=G(b|{0,1,...,n−1}).由于b|{0,1,...,0−1}=∅,因此任意m∈N∗,都有dom(b|{0,1,...,0−1})=∅={0,1, ...,m−1},于是P(b|{0,1,...,0−1},1),即b0=G(b|{0,1,...,n−1})=1.现设n∈N,则n+1∈N∗且b|{0,1,...,n}是函数且dom(b|{0,1,...,n})={0,1,...,n}.令y=(b|{0,1,...,n})(0)(b|{0,1,...,n})(n)+...+(b|{0,1,...,n})(n)(b|{0,1,...,n})(0) =b0b n+b1b n−1+...+b n b0,则P(b|{0,1,...,n},y),即b n+1=G(b|{0,1,...,n})=y=b0b n+ b1b n−1+...+b n b0.于是我们有{b n}n∈N是Catalan数列,存在性得证;(唯一性)设{b n}n∈N,{c n}n∈N都是Catalan数列.设n∈N且任意k∈N,若k<n,则b k=c k.若n=0,由于{b n}n∈N,{c n}n∈N都是Catalan数列,因此b0=c0=1;若n=0,则b0=c0,b1=c1,...,b n−1=c n−1,于是b n=b0b n−1+b1b n−2+...+b n−1b0=c0c n−1 +c1c n−2+...+c n−1c0=c n.于是根据第二数学归纳法,我们有b n=c n对一切n∈N都成立,即b=c,唯一性得证.以上定理的证明实质上是递归定理的简单应用,如果读者不太了解递归定理,大可忽略其证明,光知道这个结论对阅读本文已经足够了.知道了Catalan数列是唯一存在的,一个自然的问题是:它的通项公式是什么?我们在解答这个问题之前,先举几个具体的例子.这些例子表面上风马牛不相及,实际上它们都有着相同的答案:Catalan数.例题1设一台自动售货机在销售一种五角钱的商品,并且该自动售货机只接受面额为五角和一元的两种硬币.由于工作人员的疏忽,他们忘了在自动售货机里放有备用的零钱.现在有n个五角硬币和n个一元硬币(两个同面额的硬币不加区分)随机投入该自动售货机,问:有多少种投入方式,使得每次投入一元硬币时,总能使自动售货机有钱找零?解我们将有限序列<x1,x2,...,x2k>称为k个五角硬币与k个一元硬币的投入当且仅当任意1≤i≤2k都有x i=五角硬币或x i=一元硬币且|{j|x j=五角硬币}|= |{j|x j=一元硬币}|=k.显然,这个定义模拟了将k个五角硬币和k个一元硬币依次投入自动售货机的过程.特别的,若k=0,则投入序列为空序列<>.对于k个五角硬币与k个一元硬币的一个投入<x1,x2,...,x2k>,如果满足任意1≤t≤2k,都有|{j≤t|x j=五角硬币}|≥|{j≤t|x j=一元硬币},则我们称<x1,x2,...,x2k>是k个五角硬币与k个一元硬币的一个有效投入.特别的,若k=0,则<>也是有效投入.现证明对于k个五角硬币与k个一元硬币的一个投入<x1,x2,...,x2k>,<x1,x2, ...,x2k>是k个五角硬币与k个一元硬币的有效投入当且仅当<x1,x2,...,x2k>满足每次投入一元硬币时,总能使自动售货机有钱找零.设<x1,x2,...,x2k>是k个五角硬币与k个一元硬币的一个投入.如果这个投入是一个有效投入,则任意1≤t≤2k,都有|{j≤t|x j=五角硬币}|≥|{j≤t|x j=一元硬币}.我们设t∈N∗且t≤k,并且对一切s<t,都有当投入第s个一元硬币时,自动售货机有五角硬币找零.我们设第t个一元硬币投入是第w次投入,即x w=一元硬币且|{j≤w|x j=一元硬币}|=t,于是|{j≤w|x j=五角硬币}|≥t,根据归纳假设,由于在投入第t 个一元硬币之前,每次投入一元硬币,自动售货机都有五角硬币来找零,因此之前共用去t−1个五角硬币找零,由于|{j≤w|x j=五角硬币}|≥t,因此当第t个一元硬币投入时,自动售货机内至少还有一个五角硬币,于是可以找零.因此根据第二数学归纳法,我们有<x1,x2,...,x2k>满足每次投入一元硬币时,总能使自动售货机有钱找零.另一方面,设<x1,x2,...,x2k>满足每次投入一元硬币时,总能使自动售货机有钱找零.若x1=一元硬币,由于自动售货机事先没有零钱,因此此时无法找零,矛盾,于是x1=五角硬币,即|{j≤1|x j=五角硬币}|=1>0=|{j≤1|x j=一元硬币}|.现在设t<2k且|{j≤t|x j=五角硬币}|≥|{j≤t|x j=一元硬币}|.若x t+1=五角硬币,则|{j≤t+1|x j=五角硬币}|=|{j≤t|x j=五角硬币}|+1且|{j≤t+1|x j=一元硬币}|=|{j≤t| x j=一元硬币}|,即|{j≤t+1|x j=五角硬币}|≥|{j≤t+1|x j=一元硬币}|;若x t+1=一元硬币,则|{j≤t+1|x j=五角硬币}|=|{j≤t|x j=五角硬币}|且|{j≤t+1|x j=一元硬币}|=|{j≤t| x j=一元硬币}|+1,如果此时|{j≤t|x j=五角硬币}|=|{j≤t|x j=一元硬币}|,由于每次投入一个一元硬币都会用去自动售货机内的一个五角硬币来找零,因此当x t+1投入时,自动售货机将没钱找零了,矛盾.于是|{j≤t|x j=五角硬币}|>|{j≤t|x j=一元硬币}|,即|{j≤t+1|x j=五角硬币}|≥{j≤t+1|x j=一元硬币}|,于是根据数学归纳法,我们有<x1, x2,...,x2k>是一个有效投入.我们记B k={x|x是k个五角硬币与k个一元硬币的有效投入},并且令b k=|B k|.显然b n即为我们所求.特别的,我们有B0={<>}且b0=1.现在令B ik={x|x是k个五角硬币与k个一元硬币的有效投入且|{j≤2i|x j=一元硬币}| =i且任意t<2j,都有|{j≤t|x j=五角硬币}|>|{j≤t|x j=一元硬币}|}.显然,任意i,j∈{1,2,...,k},若i=j,则B ik ∩B jk=∅.否则,不妨设i<j,即2i<2j,如果B ik∩B jk=∅,则存在x使得x∈B ik ∩B jk,由x∈B jk知|{t≤2i|x t=五角硬币}|>|{t≤2i|x t=一元硬币}|,但由x∈B ik知|{t≤2i|x t=五角硬币}|=|{t≤2i|x t=一元硬币}|=i,矛盾.现在证明任意k>0,B k=k∪i=1B ik.由于任意1≤i≤k,都有B ik⊆B k,因此k∪i=1B ik⊆B k;另一方面,设x∈B k,即x是k个五角硬币与k个一元硬币的一个有效投入.令S= {s∈[1,2k]||{j≤s|x j=五角硬币}|=|{j≤s|x j=一元硬币}|}.显然2k∈S,即S=∅,令t是S 中的最小数,我们令i=|{j≤t|x j=一元硬币}|.由t的最小性及x是有效投入知,任意j<t,都有|{j≤t|x j=五角硬币}|>|{j≤t|x j=一元硬币}|.由于|{j≤t|x j=五角硬币}|=|{j≤t|x j=一元硬币}|,因此t是偶数,令i=t2,则x∈B ik⊆k∪i=1B ik,于是B k⊆k∪i=1B ik,即B k=k∪i=1B ik.现在设1≤i≤k.我们证明|B ik|=|B i−1×B k−i|.我们定义二元关系f为任意x,y,xfy当且仅当x∈B ik且y=(<x2,x3,...,x2i−1>,<x2i+1,...,x2k>).首先证明f 是函数,事实上,若x,y 1,y 2满足xfy 1,xfy 2,则y 1=(<x 2,x 3,...,x 2i −1>,<x 2i +1,...,x 2k >)=y 2,即f 是函数.现在设x ∈dom(f ),则存在y 使得xfy ,即x ∈B i k ,于是dom(f )⊆B i k ;另一方面,设x ∈B i k ,令y =(<x 2,x 3,...,x 2i −1>,<x 2i +1,...,x 2k >),即得xfy ,即x ∈dom(f ),于是B i k ⊆dom(f ),因此dom(f )=B i k .现在设y ∈ran(f ),则存在x 使得xfy ,即x ∈B i k 且y =(<x 2,x 3,...,x 2i −1>,<x 2i +1,...,x 2k >).由于x ∈B i k ,因此|{j ≤2i |x j =五角硬币}|=|{j ≤2i |x j =一元硬币}|=i 且|{j ≤2i −1|x j =五角硬币}|>|{j ≤2i −1|x j =一元硬币}|,因此x 2i =一元硬币.显然x 1=五角硬币,于是|{2≤j ≤2i −1|x j =五角硬币}|=|{2≤j ≤2i −1|x j =一元硬币}|=i −1.由于x ∈B i k ,因此任意t ≤2i −1,都有|{j ≤t |x j =五角硬币}|>|{j ≤t |x j =一元硬币}|,因此任意t ≤2i −1,都有|{2≤j ≤t |x j =五角硬币}|≥|{2≤j ≤t |x j =一元硬币}|.于是<x 2,...,x 2i −1>∈B i −1.由于|{j ≤2i |x j =五角硬币}|=|{j ≤2i |x j =一元硬币}|=i ,因此|{2i<j ≤2k |x j =五角硬币}|=|{2i<j ≤2k |x j =一元硬币}|=k −i ,由于任意t ≤2k ,都有|{j ≤t |x j =五角硬币}|≥|{j ≤t |x j =一元硬币}|,因此任意2i<t ≤2k,|{2i<j ≤t |x j =五角硬币}|≥|{2i<j ≤t |x j =一元硬币}|,即<x 2i +1,...,x 2k >∈B k −i ,于是y ∈B i −1×B k −i ,即ran(f )⊆B i −1×B k −i ;另一方面,设y ∈B i −1×B k −i ,则存在<u 1,u 2,...,u 2i −2>∈B i −1,<v 1,v 2,...,v 2k −2i >∈B k −i 使得y =(<u 1,u 2,...,u 2i −2>,<v 1,v 2,...,v 2k −2i >).令x =<五角硬币,u 1,u 2,...,u 2i −2,一元硬币,v 1,...,v 2k −2i >,显然y =(<x 2,x 3,...,x 2i −1>,<x 2i +1,...,x 2k >)且|{j ≤2k |x j =五角硬币}|=|{j ≤2k |x j =一元硬币}|=(i −1)+1+(k −i )=k .现在设t<2i,由于|{j ≤t |u j =五角硬币}|≥|{j ≤t |u j =一元硬币}|且x 1=五角硬币,因此|{j ≤t |x j =五角硬币}|>|{j ≤t |x j =一元硬币}|.显然|{j ≤2i |x j =五角硬币}|=|{j ≤2i |x j =一元硬币}|=i .最后设t ≤2k ,若t ≤2i ,则我们已有|{j ≤t |x j =五角硬币}|≥|{j ≤t |x j =一元硬币}|,若t>2i,由于|{j ≤t |v j =五角硬币}|≥|{j ≤t |v j =一元硬币}|且|{j ≤2i |x j =五角硬币}|=|{j ≤2i |x j =一元硬币}|,因此|{j ≤t |x j =五角硬币}|≥|{j ≤t |x j =一元硬币}|,即x ∈B i k,于是xfy ,即y ∈ran(f ),于是B i −1×B k −i ⊆ran(f ),即ran(f )=B i −1×B k −i ,因此f 是B i k到B i −1×B k −i 的满射.最后证明f 是单射.事实上,若x,x ′满足f (x )=f (x ′),则x,x ′∈B i k且(<x 2,...,x 2i −1>,<x 2i +1,...,x 2k >)=(<x ′2,...,x ′2i −1>,<x ′2i +1,...,x ′2k >),于是x j =x ′j 对一切j ∈{2,...,2i −1,2i +1,...,2k }成立.由于x,x ′∈B i k ,因此显然x 1=x ′1=五角硬币且x 2i =x ′2i =一元硬币,即x =x ′,于是f 是单射,即f 是B i k 到B i −1×B k −i 的双射,因此|B i k |=|B i −1×B k −i |,根据乘法原理,我们有|B i k |=b i −1b k −i .最后设k ∈N ,则B k +1=k +1∪i =1B i k +1且任意1≤i,j ≤k +1,若i =j ,则B i k +1∩B j k +1=∅,于是根据加法原理,我们有b k +1=|B k +1|=|B 1k +1|+|B 2k +1|+...+|B k +1k +1|=b 0b k +b 1b k −1+...+b k b 0,再考虑到b0=1,我们便知{b k }k ∈N 为Catalan 数列.例题2将n 个直径相同,但编号两两不同的小球按编号从小到大的顺序排成一排,依次投入一个一头密闭的圆柱形容器(编号小的先投入),已知在该容器底部装有一个弹簧,因此进入容器的小球会不定时的反弹出来,又知容器口的直径在球的直径与两倍球的直径之间,即不可能有两个小球同时进出且后进去的小球会先弹出,问:共有多少个小球的弹出序列?解如果有限序列<x1,x2,...,x k>满足x1,x2,...,x k两两不同,并且任意1<t<i<j<k,若x i,x j<x t,则x i>x j,则我们称这个序列是个可能序列.我们现在设k个小球的编号为p1<p2<...<p k,现在证明序列<x1,x2,...,x k>是这k个小球的一个弹出序列当且仅当<x1,x2,...,x k>是p1,p2,...,p k的一个排列且<x1,x2,...,x k>是可能序列.现在设<x1,x2,...,x k>是这k个小球的一个弹出序列,由于每个球恰被弹出一次,因此<x1,x2,...,x k>是p1,p2,...,p k的一个排列.若<x1,x2,...,x k>不是可能序列,则存在1<t<i<j<k使得x i,x j<x t且x i≤x j,由于<x1,x2,...,x k>是p1,p2,...,p k 的一个排列,因此x i=x j,即x i<x j.由于x i,x j<x t,因此x i,x j在x t之前进入容器,又由于i,j>k,因此当x t被弹出时,x i,x j还在容器中没被弹出,由于x i<x j由’后进先出’的原理知,j<i,这与i<j矛盾,于是<x1,x2,...,x k>是可能序列;另一方面,设<x1,x2,...,x k>是p1,p2,...,p k的一个排列且<x1,x2,...,x k>是可能序列.我们现在证明任意1≤s≤k,都能只投入p1,p2,...,max{x1,x2,...,x s},就能使得x1,x2,...,x s按这个顺序弹出.显然,我们连续投入p1,p2,...,x1=max{x1}而在投入x1之前小球都不弹出,知道投入x1后,弹出x1,这就实现了只投入p1,p2,...,max{x1}就能使得只弹出x1.现在设1≤s<k且只投入p1,p2,...,max{x1,x2,...,x s},就能使得x1,x2,...,x s按这个顺序弹出.显然x s=max{x1,x2,...,x s}.若x s+1>max{x1,...,x s},则我们再投人p max{x1,...,x s}+1,...,x s+1并且之间不让任何球弹出,直到投入x s+1后让x s+1弹出,这时max{x1,x2,...,x s+1}=x s+1且只投入p1,p2,...,x s+1就能使x1,...,x s+1按这个顺序弹出;若x s+1<max{x1,x2,...,x s},则此时说明x s+1已经投入了容器且尚未弹出.我们现在证明x s+1是现在留在容器中编号最大的一个小球.若不然,还有一个编号更大的小球y也留在容器中,即x s+1<y,由于y还在容器中,因此y/∈{x1,x2,...,x s}且y<max{x1,x2,...,x s},于是存在j>s+1使得y=x j.由于<x1,x2,...,x k>是可能序列,因此x s+1>x j=y,这与y<x s+1矛盾.因此x s+1是留在容器里编号最大的小球,因此它可以被弹出,即此时投入的小球只有p1,p2,...,max{x1,...,x s}=max{x1,...,x s+1},且x1,x2,...,x s+1按这个顺序弹出.于是根据数学归纳法,我们有任意1≤s≤k,都能只投入p1,p2,...,max{x1,x2,...,x s},就能使得x1,x2,...,x s按这个顺序弹出.于是我们有<x1,x2,...,x k>是弹出序列.对于k个编号为p1<p2<...<p k的小球,我们记B(p1,p2,...,p k)为这k个小球的所有弹出序列构成的集合.现在证明k个编号为p1<p2<...<p k的小球及k个编号为p′1<p′2<...<p′k的小球,|B(p1,p2,...,p k)|=|B(p′1,p′2,...,p′k)|.我们定义映射φ:{p1,p2,...,p k} →{p′1,p′2,...,p′k}:p i→p′i.显然φ是个保序的双射.现在定义二元关系f为任意x,y,xfy当且仅当x∈B(p1,p2,...,p k)且y=φ◦x.首先证明f是函数,事实上,设x,y1,y2满足xfy1,xfy2,则y1=φ◦x=y2,即f是函数.现在设x∈dom(f),则存在y使得xfy,于是x∈B(p1,p2,...,p k),即dom(f)⊆B(p1,p2,...,p k);另一方面,设x∈B(p1,p2,...,p k),则令y=φ◦x,即得xfy,即x∈dom(f),于是B(p1,p2,...,p k)⊆dom(f),因此dom(f)=B(p1,p2,...,p k).现在设y∈ran(f),则存在x使得xfy,于是x∈B(p1,p2,...,p k),且y=φ◦x.由于x:{1,2,...,k} →{p1,p2,...,p k},φ:{p1,p2,...,p k} →{p′1,p′2,...,p′k}是双射,因此y:{1,2,...,k} →{p′1,p′2,...,p′k}是双射,即y是p′1,p′2,...,p′k的一个排列.现在设1≤t<i<j≤k且y i,y j<y t.于是φ−1(y i),φ−1(y j)<φ−1(y t),由于x=φ−1◦y,因此φ−1(y i)=x i,φ−1(y j)=x j,φ−1(y t)=x t,即x i,x j<x t,由于x是可能序列,因此x i>x j,即y i=φ(x i)>φ(x j)=y j,即y是可能序列,于是y是p′1,p′2,...,p′k的弹出序列,即y∈B(p′1,p′2,...,p′k),因此ran(f)⊆B(p′1,p′2,...,p′k);另一方面,设y∈B(p′1,p′2,...,p′k),令x=φ−1◦y,则显然y=φ◦x且x是p1,p2,...,p k的一个排列.现在设1≤t<i<j≤k且x i,x j<x t,由于y i=φ(x i),y j=φ(x j),y t=φ(x t),因此y i,y j<y t,由于y是可能序列,因此y i>y j,即x i>x j,即x是可能序列,于是x是p1,p2,...,p k的弹出序列,即x∈B(p1,p2,...,p k),因此xfy,即y∈ran(f),于是B(p′1,p′2,...,p′k)⊆ran(f),因此ran(f)=B(p′1,p′2,...,p′k),即f是B(p1,p2,...,p k)到B(p′1,p′2,...,p′k)的满射.最后证明f是单射函数.事实上,若x,x′满足f(x)=f(x′)=y,则y=φ◦x,y=φ◦x′,于是x=φ−1◦y=x′,即f是单射函数.于是f是B(p1,p2,...,p k)到B(p′1,p′2,...,p′k)的双射,即|B(p1,p2,...,p k)|=|B(p′1,p′2,...,p′k)|.这说明k个小球的弹出序列的数量与小球的编号无关.现在设k>0且k个小球的编号以小到大分别为p1,p2,...,p k.对于任意1≤i≤k,令B i(p1,p2,...,p k)={x∈B(p1,p2,...,p k)|x i=p1}.显然任意1≤i,j≤k,若i=j,则B i(p1,p2, ...,p k)∩B j(p1,p2,...,p k)=∅且B(p1,p2,...,p k)=k∪i=1B i(p1,p2,...,p k).现在设1≤i≤k,我们证明|B i(p1,p2,...,p k)|=|B(p2,...,p i)×B(p i+1,...,p k)|.定义二元关系g使得任意x,z,xgz当且仅当x∈B i(p1,p2,...,p k)且z=(<x1,x2,...,x i−1>,<x i+1,x i+2,...,xk>).容易证明g是函数且dom(g)=B i(p1,p2,...,p k).现在设z∈ran(g),则存在x使得xgz,于是x∈B i(p1,p2,...,p k)且z=(<x1,x2,...,x i−1>,<x i+1,x i+2,...,xk>).由于x i=p1,若存在j≤i−1使得x j>p i,则存在s>i,w≤i 使得x s=p w,于是x i=p1<x j,x s<x j,由于x是可能序列,因此x i>x s,即p1>p w,矛盾,于是任意j≤i−1,都有x j≤p i,于是<x2,x3,...,x i−1>是p2,p3,...,p i的一个排列且<x i+1,x i+2,...,x k>是p i+1,...,p k的一个排列.现在设1≤t<w<s≤i−1且x w,x s<w t,由于x是可能序列,因此x w>x s;即<x2,...,x i−1>是可能序列,同理,<x i+1,x i+2,...,x k>也是可能序列,因此我们有<x2,...,x i−1>∈B(p2,...,p i)且<x i+1,x i+2,...,x k>∈B(p i+1,...,p k),即z∈B(p2,...,p i)×B(p i+1,...,p k),于是ran(g)⊆B(p2,...,p i)×B(p i+1,...,p k);另一方面,设z∈B(p2,...,p i)×B(p i+1,...,p k),则存在<y1,...,y i−1>∈B(p2,..., p i)且<r1,...,r k−i>∈B(p i+1,...,p k),使得z=(<y1,...,y i−1>,<r1,r2,...,r k−i>).令x=<y1,...,y i−1,p1,r1,r2,...,r k−i>,显然我们有x是p1,p2,...,p k的一个排列且x i=p1且z=(<x1,x2,...,x i−1>,<x i+1,x i+2,...,xk>).最后设1≤t<w<s≤k且x w ,x s <x t .如果t ≤i ,若s>i ,则x t ≤i 且x s ≥i +1,这与w s <x t 矛盾,于是s ≤i .若s =i ,则显然x w >p 1=x s ;若s<i ,由于<x 2,x 3,...,x i −1>是可能序列,因此x w >x s ;若t>i ,由于<x i +1,x i +2,...,x k >是可能序列,因此x w >x s ,于是x 是可能序列,即x ∈B i p 1,p 2,...,p k ,于是xgy ,即y ∈ran(g ),于是B (p 2,...,p i )×B (p i +1,...,p k )⊆ran(g ),即ran(g )=B (p 2,...,p i )×B (p i +1,...,p k ).因此g 是B i (p 1,p 2,...,p k )到B (p 2,...,p i )×B (p i +1,...,p k )的满射.现在设x,x ′满足g (x )=g (x ′)=z ,则x,x ′∈dom(g )=B i (p 1,p 2,...,p k )且z =(<x 2,...,x i >,<x i +1....,x k >)=(<x ′2,...,x ′i >,<x ′i +1....,x ′k >),即x j =x ′j 对一切j ∈{1,2,...,i −1,i +1,...,k }成立,由于x i =x ′i =p 1,于是x =x ′,即g 是单射.于是g 是B i (p 1,p 2,...,p k )到B (p 2,...,p i )×B (p i +1,...,p k )的双射,即|B i (p 1,p 2,...,p k )|=|B (p 2,...,p i )×B (p i +1,...,p k )|.对于k 个编号从小到大为p 1,...,p k 的小球,我们有记b k =|B (p 1,...,p k )|.显然b 0=1.于是根据加法原理和乘法原理,我们有b k +1=∑k +1i =1|B i (p 1,...,p k )|=∑k +1i =1b i −1b k +1−i ,即{b k }是Catalan 序列.例题3如图有一个有n 条水平线和n 条竖直线编成的交通网.有一只蜗牛想从A 点爬到B 点,并且它只能沿着直线向上或向右爬行,并且限制蜗牛只能在红色对角线的左上方爬行(可以碰到对角线,但不能穿越到对角线的右下方),问:这只蜗牛共有多少条路可以走?解对于n 条水平线和n 条竖直线编成的交通网,一条从A 到B 的路径就相当与一个由n 个’上’和n 个’右’构成的序列,由于不能穿越对角线,因此从左往右看,’右’的数量不能超过’上’的数量,于是和例1一样的分析,我们有蜗牛可走的路线数b n 是Catalan 数列.例题4对于一个二元树(每个节点最多有两个儿子),若满足1.根不编码;2.若一个节点有两个儿子时,左编的儿子编码0,右边的儿子编码1;3.若一个节点只有一个儿子时,这个儿子可以编码0,也可以编码1;则我们称这时个编码二元树,现在问,恰有n个节点的编码二元树共有多少棵?解我们设恰有n个节点的编码二元树共有b n棵.显然b0=1.现在考虑n+1个节点的编码二元树,这样的编码二元树一个可以分成n+1类,其中第i类为左边的分树有i−1个节点,右边的分树有n+1−i个节点.根据乘法原理,第i 类的编码二元树共b i−1b n+1−i,于是根据加法原理,我们有b n+1=b0b n+b1b n−1+...+b n b0,即{b n}为Catalan序列.由以上的例题可以看出很多计数问题都可以转换成Catalan序列来求解.于是求出Catalan序列的通项是必有的,于是我们有了下面的定理.定理2设有数列{b n}n∈N是Catalan数列,则任意n∈N,都有b n=1n+1C n2n.证明我们设c n=1n+1C n2n,显然c0=1.我们令f(x)=c0+c1x+c2x2+....根据Stirling公式,我们有limn→∞n√c n=limn→∞n√1n+1C n2n=limn→∞n√C n2n=limn→∞n√(2n)!(n!)2=lim n→∞n(2n)!√4nπ(2ne)2n2nπ(ne)2n(n!)2√4nπ(2ne)2n2nπ(ne)2n=4,于是f(x)在(−14,14)内有定义.令g(x)=xf(x)=c0x+c1x2+...,则g′(x)=c0+2c1x+...=C0+C12x+C24x2+....由于(1−4x)−12=C0−12+C1−12(−4x)+...,且C k−12(−4)k=(−4)k(−12)(−32)...(−2k−12)k!=2k 1·3·...·(2k−1)k!=2k(2k)!k!(2·4·...·2k)=(2k)!k!k!=C k2k,于是g′(x)=(1−4x)−12.由于g(0)=0,因此g(x)=∫x(1−4x)−12d x=−14∫x(1−4x)−12d(1−4x)=[−√1−4x2]x=1−√1−4x2.于是f(x)=1,x=01−√1−4x2x,x=0,即f2(x)=1,x=01−2x−√1−4x2x2,x=0,因此xf2(x)=0,x=01−√1−4x2x−1,x=0=f(x)−1,即f(x)=xf2(x)+1.另一方面,我们有xf2(x)+1=1+c0c0x+(c0c1+c1c0)x2+...,于是c n+1=c0c n+c1c n−1+...+c n c0,即{c n}是Catalan序列,于是b n=c n=1n+1C n2n.特别值得一题的是,以上定理的证明中用到了(1−4x )−12=∞∑k =0C k 2k x k 这个结论.我们将这个结论发展一下,便可得到以下推论.推论1我们有C 00C n 2n +C 12C n −12n −2+...+C n 2n C 00=4n .证明令f (x )=(1−4x )−12=∞∑k =0C k 2k x k ,则f 2(x )=11−4x =1+4x +42x 2+...,另一方面,我们有f 2(x )=C 00C 00+(C 00C 12+C 12C 00)x +(C 00C 24+C 12C 12+C 24C 00)x 2+...,于是我们有C 00C n 2n +C 12C n −12n −2+...+C n 2n C 00=4n .。

常用数学知识

常用数学知识

常用数学知识重要定理和公式一、常见递推关系1.Fibonacci 数列A(1)=1; A(2)=1;A(n)=A(n-1) + A(n-2);2.Catalan数:前16个:1 12 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 (在处理数据的过程中应该用到高精度)考虑具有n个结点不同形态的二叉树的个数H(n)H (0) = 1;H (n) = H (0) H (n-1) + H (1) H (n-2) + H (2) H (n-3) … + H (n-2) H (1) + H (n-1) H (0) ;通项公式为:H (n) = (1/ (n+1)) * C (n, 2n)可推导出:1.长度为n的0-1串中最多含k个1的例长度为N (N<=31)的01串中1的个数小于等于L的串组成的集合中找出按大小排序后的第I个01串。

2给定序列入栈出栈后可形成的情况总数为C(2n, n) –C(2n,n+1).例fjoi2000在一个列车调度站中,2条轨道连接到2条侧轨处,形成2个铁路转轨站,如下图所示。

其中左边轨道为车皮入口,右边轨道为出口。

编号为1,2,……,n的N个车皮从入口依次进入转轨站,由调度室安排车皮进出栈次序,并对车皮按其出栈次序重新编序a1,a2,……,an。

给定正整数N(1<=n<=300),编程计算右边轨道最多可以得到多少个不同的车皮编序方案。

例如当n=3时,最多得到5组不同的编序方案。

3. 第二类Stirling数:s(n,k)表示含n个元素的集合划分为k个集合的情况数A.分类:集合{An}存在,则有s(n-1,k-1); 不存在则An和放入k个集合中的任意一个,共k*s(n-1,k)种。

s(n,k)={ s(n-1,k-1)+k*s(n-1,k) (n>k>=1) }*:求一个集合总的划分数即为sigema(k=1..n) s(n,k) .4.数字划分模型*NOIP2001数的划分将整数n分成k份,且每份不能为空,任意两种分法不能相同(不考虑顺序)。

catalan数的定义

catalan数的定义

catalan数的定义Catalan 数是一种在组合数学中常见的数列,它得名于比利时数学家欧仁·查尔斯·卡塔兰(Eugène Charles Catalan)。

Catalan 数在数学和计算机科学中有着广泛的应用,尤其在组合计数、图论和动态规划等领域。

Catalan 数的定义是一种递归关系,可以用以下公式表示:Cn = C0*C(n-1) + C1*C(n-2) + ... + C(n-1)*C0其中Cn表示第n个Catalan 数,C0、C1、...、C(n-1)分别表示前n-1个 Catalan 数。

Catalan 数的计算可以通过动态规划方法来实现。

我们从C0开始,逐步计算出C1、C2、C3...直到Cn。

首先,我们知道C0=1,然后根据递推关系计算C1、C2...直到Cn。

最后得到的Cn即为所求的Catalan 数。

Catalan 数有许多重要的性质和应用。

首先,Catalan 数可以用来计算括号匹配的组合数。

例如,在一个有效的括号序列中,左括号的数量必须与右括号的数量相同,并且任意前缀中左括号的数量都不少于右括号的数量。

假设有n对括号,那么可以通过Catalan 数计算出所有可能的有效括号序列的数量。

Catalan 数还可以用于计算凸多边形的划分数。

对于一个n+2边的凸多边形,可以通过划分将其分解为n个三角形。

Catalan 数可以用来计算出所有可能的凸多边形划分数。

另一个应用是在计算卡特兰数的排列时,可以用于计算n个节点的二叉树的数量。

二叉树是一种常见的数据结构,其具有广泛的应用。

通过Catalan 数,我们可以得知在给定n个节点的情况下,可以构建多少种不同形状的二叉树。

除了以上应用之外,Catalan 数还与许多其他组合计数问题有关。

例如,在图论中,Catalan 数可以用来计算出不同的拓扑排序序列的数量。

在排列组合中,Catalan 数可以计算出满足特定条件的排列的数量。

组合数学-catlan数

组合数学-catlan数
令 f n1 nhn1 , fn 2(n 3) f n1 (4n 6) fn n 1 n 1 (2n 2)(2n 3) fn. (n 1)(n 1)
§2.11 即
Catalan 数
f n1 (2n 2)(2n 3) , f 2 h2 1, fn (n 1)(n 1) f n1 f n f n1 f 4 f 3 f n1 f n f n1 f n2 f 3 f 2
§2.11
Catalan 数
用上述方法建立了由 n 1个0和 n 1 个1 组成的2n位数,与由n个0和n个1组成的2n位 数中从左向右扫描出现0的累计数超过1的累 计数的数一一对应。 * 例如10100101是由4个0和4个1组成的8位2 进制数。但从左而右扫描在第5位(打*号) 出现0的累计数3超过1的累计数2,它对应于
§2.11
Catalan 数
反过来,任何一个由 n 1个0,n 1 个1组 成的2n位数,由于0的个数多2个,2n是偶数, 故必在某一个奇数位上出现0的累计数超过1 的累计数。同样在后面的部分,令0和1互换, 使之成为由n个0和n个1组成的2n位数。即n 1 个0和 n 1个1组成的2n位数,必对应于一个 不合要求的数。
个0的累计数,和m个1的累计数。 此后的2(n m) 1 位上有n m 个1, n m 1 个0。如若把后面这部分2(n m) 1 n m 1 位,0与1交换,使之成为 n m个0, 个1,结果得1个由 n 1 个0和 n 1 个1组成 的2n位数,即一个不合要求的数对应于一个 由 n 1 个0和 n 1 个1组成的一个排列。
§2.11
Catalan 数
例3的问题。 ' ' ' 根据例3的结果。从O (0,1) 点通过 O A 的 ' ' ' 点,以及 O A 上方的点到达 A (n 1, n) 的路径 数为 1 2n 2 2n 2 (2n 2)![ (n 1)!(n 1)! n 1 n
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Catalan数列
Catalan公式是这样的
f(n)=f(1)*f(n-1)+f(2)*f(n-2)+f(3)*f(n-3)+......+f(n-1)*f(1)
前16个:
1 1
2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 (在处
理数据的过程中应该用到高精度)
Catalan 数列 [转贴]
看下面两个例题:
将一个凸多边形区域分成三角形区域的方法数?
令hn表示具有n+1条边的凸多边形区域分成三角形的方法数。

同时令h1=1,则hn满足递推关hn=h1hn-1+h2hn-2+...+hn-1h1(n>=2)(想一想,为什么?)
该递推关系的解为hn=c(2n-2,n-1)/n (n=1,2,3,...)
其对应的序列为1,1,2,5,14,42,132,....从第二项开始分别是三边形,四边形,...的分法数即k边形分成三角形的方法数为hk=c(2k-4,k-2)/(k-1)(k>=3)
n个+1和n个-1构成2n项 a1,a2,...,a2n
其部分和满足a1+a2+...+ak>=0(k=1,2,3,..,2n)对与n该数列为
Cn=c(2k,k)/(k+1) (k>=0) 对应的序列为 1,1,2,5,14,42,132,...
序列1,1,2,5,14,42,132,....叫Catalan数列。

下列问题都是Catalan数列:
1.有2n个人排成一行进入剧场。

入场费5元。

其中只有n个人有一张5元钞票,另外n人只有
剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票2.一位大城市的律师在她住所以北n个街区和以东n个街区处工作。

每天她走2n个街区去上
从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?
3.在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?
4.n个结点可够造多少个不同的二叉树?
5.一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?
[附]生成程序 [原创]
var
a,b:array[1..100]of int64;
n,k,r,i,ji:longint;
begin
readln(n);
if (n=1)or(n=2) then begin writeln(1);halt;end ;
r:=n-1;
k:=2*(n-1);
for i:=1 to r do
begin
a[i]:=i;
b[i]:=k-r+i;
end;
k:=r;
ji:=0;
repeat
if k=r then ji:=ji+1;
if a[k]<b[k] then begin a[k]:=a[k]+1;
if k<r then for k:=k+1 to r do
a[k]:=a[k-1]+1;
end
else k:=k-1;
until k=0;
writeln(ji div n);
end.其实这样写是最最最笨的方法,可以直接用C的性质写,不用把每一个C求出来...。

相关文档
最新文档