卡特兰数
卡特兰数
卡特兰数基本例题:
T1:合法括号序列方案数:
问题:长度为 \(2n\) 的括号序列,\(n\) 个左括号,n 个右括号,求合法括号序列方案数。
问题转换,也就是任何时刻 右括号数\(<=\)左括号数。
我们要求长度为2n的括号序列,考虑把一个括号序列断开成两个,左括号个数分别为i和n-i,枚举断点。
第一眼 \(dp\) , \(dp[i]\) 表示有 \(i\) 个左括号的合法的括号序列,根据乘法原理 \(dp\) 方程如下:
示意:枚举和第一个左括号(第一个位置)与对应的右括号之间有多少括号对
\[dp_{m}=\sum_ {i=1}^{m}dp_{i-1}dp_{m-i}
\]
这是\(O(n^2)\)的做法,如何更加优秀呢?
我们将dp数列写出来
特别的根据定义,\(dp_0=1,dp_1=1\)
\[<dp_0=1,dp_1=1,dp_2,......,dp_n-1,dp_n>
\]
我们再将每一个dp是怎么来的写出来
\[dp_0=1
\]
\[dp_1=1
\]
\[dp_2=dp_1*dp_1
\]
\[dp_3=dp_1*dp_2+dp_2*dp_1
\]
\[dp_4=dp_1*dp_3+dp_2*dp_2+dp_3*dp_1
\]
\[dp_5=……
\]
这个数列我们可以容易的看出是这个数列本身和自己卷积在向右移动1位再在首位+1得到
因为这个数列和自己卷积得到
\[<dp_0*dp_1+dp_1*dp_0,dp_0*dp_2+dp_1*dp_1+dp_2*dp_0,dp_0*dp_3+dp_1*dp_2+dp_2*dp_1*dp_3*dp_0>
\]
发现就是向右移动1位再在首位+1得到
那么我们设序列生成函数为 \(G(x)\)
\[G(x)^2*x+1=G(x)
\]
解二元一次方程可得:
\[G(x)=\frac {1\pm\sqrt{(1-4x)}} {2x}
\]
我们需要泰勒展开\(\sqrt{(1-4x)}\)
我们先求导
\[f(x)=\sqrt{(1-4x)}
\]
\[f'(x)=\frac 1 2(1-4x)^{-\frac 1 2}\times-4
\]
\[f^{(2)}(x)=(\frac 1 2)(-\frac 1 2)(1-4x)^{-\frac 3 2}\times(-4)^2
\]
\[f^{(3)}(x)=(\frac 1 2)(-\frac 1 2)(-\frac 3 2)(1-4x)^{-\frac 5 2}(-4)^3
\]
\[f^{(n)}(x)=(-1)^{n-1}\times2^{-n}\times(1\times 3\times 5\times …… \times2n-3)(1-4x)^{-\frac {2*n-1}{2}}\times(-4)^n\\
\]
带入泰勒展开,在\(x_0=0\) 的位置展开
\[f(x)=1+\sum_{n=1}^\infty (-1)^{n-1}\times\frac {(1\times 3\times 5\times …… \times2n-3)}{n!\times2^n}\times (-4x)^n
\]
带回G(x)得
\[G(x)=\frac{1-1-\sum_{n=1}^\infty (-1)^{n-1}\times\frac {(1\times 3\times 5\times …… \times2n-3)}{n!\times2^n}\times (-4x)^n}{2x}
\]
\[G(x)=\frac 1 2\times {\sum_{n=1}^\infty \frac {(1\times 3\times 5\times …… \times2n-3)}{n!\times2^n}\times(4x)^{n-1}}\\
\]
分式里面上下同乘\(2\times4\times……\times2n-2\)
\[G(x)=\frac 1 2 \times\sum_{n=1}^\infty \frac{(2n-2)!}{n!\times2^n\times(n-1)!\times 2^{n-1}}\times(4x)^{n-1}
\]
\[G(x)=\frac 1 2 \times\sum_{n=1}^\infty \frac {4^n} {2^n*2^{n-1}}\times\frac{(2n-2)!}{n!\times(n-1)!}\times(x)^{n-1}
\]
\[G(x)=\sum_{n=1}^\infty \frac{1}{n}\times \frac{(2n-2)!} {(n-1)!\times(n-1)!} \times x^{n-1}
\]
\[G(x)=\sum_{n=0}^\infty \frac{1}{n+1}\times \frac{2n!} {n!\times n!} \times x^n
\]
我们找生成函数的第i项系数
\[[x^n]G(x)=\frac{1}{n+1}\times \frac{2n!}{n!+n!}=\frac {\binom {2n} n} {n+1}
\]
得证
我们根据推出的这个可以推出另外一个线性求卡特兰数
\[dp[i]=dp[i-1]\times\frac {4\times n-2}{i+1}
\]
卡特兰数还有这个表示方法
\[\binom {2n} {n} - \binom {2n} {n-1}
\]
证明
我们构造这样一种模型
问题:你可以向上走和向右走各走n个单位,最后要到达 \((n,n)\) 途中不能越过y=x,求方案数量。
容斥原理,用总方案减不合法的方案
总方案:\(\binom {2n}{n}\)
考虑一共 \(2n\) 单位,其中 \(n\) 是向上
不合法方案:\(\binom {2n} {n+1}\)
考虑
这是不合法方案,刚刚超过一格的一格一定是向上的,不算入组合方案,剩下的向上的,所以方案数是:\(\binom {2n} {n-1}\)
所以是
\[\binom {2n} {n} - \binom {2n} {n-1}
\]