标签:前缀和 class strong 匹配 证明 lan inline 前缀 str
\(Catalan\) 数列
? 给定\(n\)个\(0\)和\(n\)个\(1\),它们按照某种顺序排成长度为\(2n\)的序列,满足任意前缀中\(0\)的个数都不少于\(1\)的个数的序列的数量即为\(Catalan\)数列。
证明:
? 令\(n\)个\(0\)和\(n\)个\(0\)随意排成一个长度为\(2n\)的序列\(s\),若\(s\)不满足任意前缀和中\(0\)的个数不少于\(1\)的个数,则存在一个最小的位置\(2p+1\),使得\(s\)[\(1,2p+1\)]中有\(p\)个\(0\),\(p+1\)个\(1\)。而把\(s\)[\(2p+2\),\(2n\) ]中的数都取反,包含\(n-p-1\)个\(0\)和\(n-p\)个\(1\)。于是,我们得到了\(n-1\)个\(0\)和\(n+1\)个\(1\)排成的序列。
? 同理,令\(n-1\)个\(0\)和\(n+1\)个\(1\)随意排成一个长度为\(2n\)的序列\(B\)。也必定存在一个最小的位置\(2p+1\),使得\(s[1,2p+1]\)中有\(p\)个\(0\),\(p+1\)个\(1\),把后面的序列取反,就得到了\(n\)个\(0\),\(n\)个\(1\)组成的存在一个前缀\(0\)比\(1\)多的序列。
? 所以,以下两种序列的数量其实是一样的:
所以,用所有情况减去不合法的情况就得到了卡特兰数。
推论
? 以下问题都与\(Catalan\)数有关
1. 括号匹配的合法括号序列数量
2. 合法出栈序列数量
3. $n$ 个节点构成的不同二叉树的数量
4. 平面直角坐标系中,每一步只能向上或向右走,从$(0,0)$到$(n,n)$并且除了两个端点外不接触直线$y=x$的路线数量为$2Cat_{n-1}$。
标签:前缀和 class strong 匹配 证明 lan inline 前缀 str
原文地址:https://www.cnblogs.com/doublety/p/11778734.html