卡特蘭數的英文維基講得非常全面,強烈建議閱讀!
Catalan number - Wikipedia
(本文中圖片也來源於這個頁面)
由於本人太菜,這里只選取其中兩個公式進行總結。
(似乎就是這兩個比較常用?)
首先先扔卡特蘭數的定義式
\[Catalan_n=\sum_{i=1}^{n-1}Catalan_i*Catalan_{n-i} \]
(卡特蘭數的很多應用,比如二叉樹形態數,出棧序列數等,都由這個定義式得到。詳見英文維基)
公式1 (通項公式) :
\[Catalan_n=\frac{1}{n+1}C_{2n}^n \]
在上文提到的出棧序列的問題情景中,如果有\(n\)個元素,在平面直角坐標系中用\(x\)坐標表示入棧數,\(y\)坐標表示出棧數,則坐標\((a,b)\)表示目前已經進行了\(a\)次入棧和\(b\)次出棧,則再進行一次入棧就是走到\((a+1,b)\),再進行一次出棧就是走到\((a,b+1)\)。並且,由於入棧數一定小於等於出棧數,所以路徑不能跨越直線\(y=x\)
因此,題目相當於求從\((0,0)\)走到\((n,n)\)且不跨越直線\(y=x\)的方案數
首先,如果不考慮不能跨越直線\(y=x\)的要求,相當於從\(2n\)次操作中選\(n\)次進行入棧,則方案數為\(C_{2n}^n\)。
然后,考慮對於一種不合法的方案,一定在若干次操作后有一次出棧數比入棧數多一次,這個點在直線\(y=x+1\) (即下圖中紅色的線) 上。那么把第一次碰到該直線以后的部分關於該直線對稱,則最終到達的點是\((n-1,n+1)\) (如下圖) 。

圖源:英文維基 (即文首網址)
顯然,任何非法方案都可以通過此方式變成一條從\((0,0)\)到\((n-1,n+1)\)的路徑,有\(C_{2n}^{n+1}\)種。而任何合法方案由於不接觸直線\(y=x+1\),無論從哪個點對稱都不是一條連續的路徑。由於合法方案數就是\(Catalan_n\),所以:
\[\begin{aligned} Catalan_n&=C_{2n}^n-C_{2n}^{n+1}\\ &=\frac{(2n)!}{n!*n!}-\frac{(2n)!}{(n+1)!*(n-1)!}\\ &=\frac{1}{n+1}(\frac{(2n)!*(n+1)}{n!*n!}-\frac{(2n)!}{n!*(n-1)!})\\ &=\frac{1}{n+1}(\frac{(2n)!*(n+1)}{n!*n!}-\frac{(2n)!*n}{n!*n!})\\ &=\frac{1}{n+1}*\frac{(2n)!*(n+1)-(2n)!*n}{n!*n!}\\ &=\frac{1}{n+1}*\frac{(2n)!}{n!*n!}\\ &=\frac{1}{n+1}C_{2n}^n\\ \end{aligned} \]
公式2 (遞推公式) :
\[Catalan_{n+1}=\frac{4n+2}{n+2}Catalan_n \]
(這個公式的推導過程似乎網上沒有,估計是思路太簡單了……我太菜了想了半天才推出來)
由上面那個通項公式得
\[\begin{aligned} Catalan_{n+1}&=\frac{1}{n+2}C_{2n+2}^{n+1}\\ &=\frac{1}{n+2}*\frac{(2n+2)!}{(n+1)!*(n+1)!}\\ &=\frac{1}{n+2}*\frac{(2n)!*(2n+1)*(2n+2)}{n!*n!*(n+1)^2}\\ &=\frac{1}{n+2}*\frac{(2n+1)*(2n+2)}{(n+1)}*\frac{1}{n+1}*\frac{(2n)!}{n!*n!}\\ &=\frac{2(2n+1)}{n+2}*\frac{1}{n+1}*C_{2n}^n\\ &=\frac{4n+2}{n+2}Catalan_n\\ \end{aligned} \]