📜  卡塔德罗姆编号(1)

📅  最后修改于: 2023-12-03 15:37:03.809000             🧑  作者: Mango

卡塔德罗姆编号

卡塔德罗姆编号(Catalan Numbers)是一种和斐波那契数列、组合数学有关的数列。它的前几项为:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, ...

定义

卡塔德罗姆数列的递推公式为:

C(0) = 1,C(n+1) = (2(2n+1)/(n+2))C(n)

其中 C(n) 表示第 n 项卡塔德罗姆数列的值。

生成函数

卡塔德罗姆数列的生成函数为:

C(x) = 1 / (1 - x) * Sum(C_k * x^k), k >= 0

其中 C_k 表示卡塔德罗姆数列的第 k 项值。

组合意义

卡塔德罗姆数列有着丰富的组合意义,比如:

  1. C(n) 种方法将一个凸 n+2 边形分割成 n 个三角形。
  2. C(n) 种完全合法的括号序列。
  3. C(n) 种山峰/山谷的组合方式,其中山峰表示逐渐上升的连续n个数,山谷表示逐渐下降的连续n个数。
应用

卡塔德罗姆数列在很多领域都有应用,如组合数学、计算几何、动态规划等。以下是一些应用的例子:

  1. 用于研究有关表达式的完全括号化的可能性。
  2. 用于研究自主合成机器和外壳合成的问题。
  3. 用于研究一维障碍的计数。
  4. 用于研究卡特兰算法。
代码实现

下面是一个使用递推方法计算卡塔德罗姆数列的Python代码实现:

def catalan(n):
    if n == 0:
        return 1
    else:
        c = catalan(n-1)
        return int(2*(2*n-1)*c/(n+1))

print([catalan(i) for i in range(10)])
# 输出 [1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862]
参考资料
  1. Catalan number - Wikipedia
  2. Gelin Gong, "A Brief Introduction to Catalan Numbers"
  3. Catalan Numbers - OEIS Foundation Inc.