卡特兰数(Catalan number)

定义

1.卡特兰数是一种数列,以比利时的数学家欧仁·查理·卡塔兰命名。
2.卡特兰数列:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012……

公式

  1. 令h(0)=1,h(1)=1,catalan数满足递推公式

    h(n)= h(0)h(n - 1) + h(1)h(n-2) + ... + h(n - 1)h(0) (n≥2) 【1】
    例如:
    h(2)=h(0)h(1) + h(1)h(0)=1·1 + 1·1=2
    h(3)=h(0)h(2) + h(1)h(1) + h(2)h(0)=1·2 + 1·1 + 2·1=5
  2. 项与项之间递推式
    h(n)=h(n - 1)(4·n - 2)/(n + 1)(n≥1) 【2】
  3. 组合公式
    h(n)=C(2n,n)/(n + 1)=C(2n,n) - C(2n,n - 1)(n≥0) 【3】

公式理解

将递推公式【1】转化成给定N个节点,能构成多少种形状不同的二叉树问题。
将二叉树分为左子树和右子树以及根节点,已知根节点需要1个节点数,令i(i h(i)·h(N - i - 1)即第i(0≤i≤N-1)种情形,又因为i的取值范围为[0,N-1],所以得:
h(n)= h(0)h(n - 1) + h(1)h(n-2) + ... + h(n - 1)h(0) (n≥2)【1】。
当N=3时的二叉树种类:

3个节点的二叉树

将递推公式【3】转化为01排列问题,有n对01排成一个序列,从左往右统计该序列0和1的个数,1的个数小于等于0的个数即视为合法序列。
将n个0放入2n个位置上有C(2n,n)个组合情况为全排列情形,再减去不合法序列即为卡特兰数。
例如:
001101为一合法序列
011010为不合法序列(异常位为3)
经分析得知不合法序列的异常位总会出现在奇数位。
假设异常位为2i+1(0≤i011101)由此可知2n的序列中有n-1个0,n+1个1,将n-1个0放入2n个位置上则有C(2n,n-1)个组合情况,该排列即为不合法情形。
所以可得:h(n)=C(2n,n)/(n + 1)=C(2n,n) - C(2n,n - 1)(n≥0) 【3】

例题:

1. n对括号匹配问题:

题目:

给出n对括号,问有多少种正确排列方式?

问题分析

当n为3时代表有3对括号,用0代表'(',用1代表')'
比如010011对应着
()(())
000111对应着
((()))
反之若101010对应着(不符合的情形)
)()()(
问题转换为,这样的满足条件的01序列有多少个。

2. 高矮排列问题:

题目:

12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

问题分析:

我们先把这12个人从矮到高放入队列(0-1-2-3-4-5-6-7-8-9-10-11),然后依照出队的次序选择6个人排在第一排,另外6个排在第二排。用0表示将队列的第一人放在第一排,用1表示表示将队列的第一人放在第二排。那么一个含有6个0,6个1的序列就对应一种方案.
比如000000111111就对应着
第一排:0 1 2 3 4 5
第二排:6 7 8 9 10 11
010101010101就对应着
第一排:0 2 4 6 8 10
第二排:1 3 5 7 9 11
反之若101010101010就对应着(不符合的情形)
第一排:1 3 5 7 9 11
第二排:0 2 4 6 8 10
问题转换为,这样的满足条件的01序列有多少个。

...0
.
.
.
0

。。

你可能感兴趣的:(卡特兰数(Catalan number))