专栏文章

学习笔记:卡特兰数相关

学习·文化课参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio2uf62
此快照首次捕获于
2025/12/02 12:27
3 个月前
此快照最后确认于
2025/12/02 12:27
3 个月前
查看原文

问题

nn 个左括号和 nn 个右括号,将它们进行匹配,即每个左括号都有对应的右括号。求每个 nn 有多少匹配方式。
下表是 n=15n = 1 \sim 5 的排列方式和答案。
n合法组合数量
0*1
1()1
2(()),()()2
3()()(),()(()),(())(),(()()),((()))5
414种组合14
542种组合42

通项公式

CnC_nnn 对括号匹配的方案数。
括号串可以表示为:
(A)B(A)B
允许 AABB 的括号串长度为 00
AA 是左括号与右括号之间的平衡子串,包含 kk 对括号。
BB 是右边剩余的平衡子串,包含 nk1n - k - 1 对括号。
由此可以得到递推公式:
Cn=k=0n1Ck×Cnk1C_n = \sum _ {k = 0} ^ {n - 1} C_k \times C_{n - k - 1}
初始化 C0=1C_0 = 1
也可以用组合数表示:
Cn=1n+1(2nn)C_n = \frac{1}{n + 1} \dbinom{2n}{n}

简单证明:
所有长度为 2n2n 的合法序列,总数为 (2nn)\dbinom{2n}{n},非法序列总数为 (2nn1)\dbinom{2n}{n - 1}
Cn=(2nn)(2nn1)=(2n)!n!n!(2n)!(n1)!(n+1)!=(2n)!(1n!n!1(n1)!(n+1)!)=(2n)!(1(n!)21n!n(n+1)n!)=(2n)!(1(n!)2n(n+1)(n!)2)=(2n)!1(n!)2(1nn+1)=(2n)!1(n!)21n+1=1n+1(2nn)\begin{aligned} C_n &= \dbinom{2n}{n} - \dbinom{2n}{n - 1} \\ &= \frac{(2n)!}{n!n!} - \frac{(2n)!}{(n - 1)!(n + 1)!} \\ &= (2n)! \left(\frac{1}{n!n!} - \frac{1}{(n - 1)!(n + 1)!}\right) \\ &= (2n)! \left(\frac{1}{(n!)^2} - \frac{1}{\frac{n!}{n} (n + 1) n!} \right) \\ &= (2n)! \left(\frac{1}{(n!)^2} - \frac{n}{(n + 1) (n!) ^2} \right) \\ &= (2n)! \frac{1}{(n!)^2} \left(1 - \frac{n}{n + 1} \right)\\ &= (2n)! \frac{1}{(n!)^2} \cdot \frac{1}{n + 1}\\ &= \frac{1}{n + 1} \dbinom{2n}{n} \end{aligned}
即:
Cn=1n+1(2nn)C_n = \frac{1}{n + 1} \dbinom{2n}{n}
证毕。

相关题目

现有一个操作数序列 1,2,,n1,2,\cdots,n,另有一个栈 AA
现在可以进行两种操作:
  • 将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的 push\texttt{push} 操作)
  • 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的 pop\texttt{pop} 操作)
对于给定的 nn,求由操作数序列 1,2,,n1,2,\cdots,n 经过操作可能得到的输出序列的总数。

卡特兰数解答

Cn=1n+1(2nn)C_n = \frac{1}{n + 1} \dbinom{2n}{n}
我们可以推导出 CnC_nCn1C_{n - 1} 的递推关系:
Cn=1n+1(2nn)=(2n)!(n+1)n!n!Cn1=1n(2(n1)n1)=(2n2)!n(n1)!(n1)!C_n = \frac{1}{n + 1} \dbinom{2n}{n} = \frac{(2n)!}{(n + 1)n!n!} \\ C_{n - 1} = \frac{1}{n} \dbinom{2(n - 1)}{n - 1} = \frac{(2n-2)!}{n(n - 1)!(n - 1)!}
那么:
CnCn1=(2n)!(n+1)n!n!(2n2)!n(n1)!(n1)!=(2n)!(2n2)!nn+1(n1)!2n!2=(2n)(2n1)n2nn+1=2(2n1)n+1\begin{aligned} \frac{C_n}{C_{n - 1}} &= \frac{\frac{(2n)!}{(n + 1)n!n!}}{\frac{(2n - 2)!}{n(n - 1)!(n - 1)!}} \\ &= \frac{(2n)!}{(2n - 2)!} \cdot \frac{n}{n + 1} \cdot \frac{(n - 1)! ^ 2}{n! ^ 2} \\ &= \frac{(2n)(2n - 1)}{n ^ 2} \cdot \frac{n}{n + 1} \\ &= \frac{2(2n - 1)}{n + 1} \\ \end{aligned}
所以:
Cn=2(2n1)n+1Cn1C_n = \frac{2(2n - 1)}{n + 1} C_{n - 1}

评论

0 条评论,欢迎与作者交流。

正在加载评论...