[笔记] 卡特兰数

同步发表于 MiNa!

基础知识#

卡特兰数的式子#

h(n)=i=0n1h(i)h(ni1)h(n)=h(n1)(4n2)n+1h(n)=(2nn)n+1=(2n+1n)2n+1

卡特兰数的例子#

  • 合法出栈入栈操作序列。
  • 合法括号序列。
  • 凸多边形划分为三角形的方案数。

拓展#

广义卡特兰数#

似乎网上有相关论文,此处仅提及 FJOI 2020 D2T2 题目的例子浅显地了解一下。

m 边凸多边形划分为 nk 边形的方案 ( m=nk2(n1) )

可以推导递推式

h(n)=SxSh(x) [ |S|=k1,xSx=n1]

也可以用生成函数表示

H(n)=xHk1(n)+1

还可以将划分方案映射为序列

我们以十边形划分为 4 个四边形为例,给出映射的规则:

1 号点出发,依次遍历所有顶点,每抵达一个顶点,记为 +1,若当前顶点有指向编号更小的顶点的弦,则把划分出的一块全部割掉,那么此时边数的变化是减少了 k1 条边,然后增加了当前弦这一条边,故记为 (k2)

特别的,我们把 n1 的连边看作弦处理。

那么一个合法的划分方案将映射为一个由 n(k2)nk2n+1+1 组成的前缀和为正的序列。

直接由 Raney 引理 得到方案数为 (nkn+1n)nkn+1.

Raney 引理#

一个环 x1,x2,...,xn,满足 xi=1,在将它裂开形成的 n 条可能的链中,恰有一条满足所有前缀和都是正数。

可以用于推导卡特兰数的一个通项式 (2n+1n)2n+1.

首先卡特兰数的等价于一个长为 2n,由 n1n1 组成前缀和非负的序列的方案数。

加入一个 1 使得 2n+1 个数的和是 1,以使用 Raney 引理。

首先这 2n+1 个数的排列方案是 (2n+1n),而由引理可知,每 2n+1 个循环同构的排列方式只有 1 种合法。

故方案数为 (2n+1n)2n+1,然后因为加入一个 1 新序列要求所有前缀和为正,所以序列首一定是 1,那么和满足卡特兰数含义的序列其实就是一一对应的。

posted @   IrisT  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩