卡特蘭數與斯特林數

#卡特蘭數
通項公式:
1:f(n)=C2nnn+1f(n) = \frac{C_{2n}^n}{n+1}
2:f(n)=i=0n1f(i)f(ni1)f(n) = \sum\limits_{i=0}^{n-1}f(i)*f(n-i-1)
常用變形3:f(n)=C2nnC2nn1f(n) = C_{2n}^{n}-C_{2n}^{n-1}
4.h(n)=h(n1)(4n2)(n+1)h(n)=h(n-1)*\frac{(4*n-2)}{(n+1)}
#應用
有一個長度爲2n2n的01序列,其中1,0各nn個,要求對於任意的整數k[1,n]k[1,n]k∈[1,n] k \in [1,n]數列的前kk個數中,1的個數不少於0。

我們把01操作看成是在平面直角座標系中行走,1向右上走,0向左下走最後一定走到了(2n,0)(2n,0)如圖

在這裏插入圖片描述
那麼路徑的數量就是在2n2n步中選擇nn步,結果是C2nnC_{2n}^n,然後加入一個限制條件,對於:對於任意前綴,1的個數不少於0。
那麼轉化到座標系中,也就是說走的路徑不應該穿過x軸,即直線$ y=0,也就是不接觸y=-1$。
於是我們把與 y=1y=−1 的接觸點的右邊整條路徑以y=1y=−1爲對稱軸翻折,於是終點變爲了(2n,2)(2n,−2)。如下圖:
在這裏插入圖片描述
那麼此時,從 (0,0)(0,0)(2n,2)(2n,−2) 的路徑必定至少穿過一次 y=1y=−1,不滿足條件,那麼此時的路徑數量即爲總路徑數中不符合題意的路徑數,那麼我們用總路徑數減去不符合的路徑數,就是最終的答案。
而此時的路徑數量也很簡單,由於反轉後終點向下移了兩位,也就意味着 n1n-1 步是1, n+1n+1 步是0,總方案 C2nn1C_{2n}^{n-1} ,那麼最終的答案就是 C2nnC2nn1C_{2n}^{n}-C_{2n}^{n-1}

誒,這不就是卡特蘭數嗎。

卡特蘭數應用

1、出棧次序:一個棧(無窮大)的進棧次序爲1、2、3……n。不同的出棧次序有幾種。
我們可以這樣想,假設k是最後一個出棧的數。比k早進棧且早出棧的有k-1個數,一共有h(k-1)種方案。比k晚進棧且早出棧的有n-k個數,一共有h(n-k)種方案。所以一共有h(k-1)*h(n-k)種方案。顯而易見,k取不同值時,產生的出棧序列是相互獨立的,所以結果可以累加。k的取值範圍爲1至n,所以結果就爲h(n)= h(0)h(n-1)+h(1)h(n-2) + … + h(n-1)h(0)。
出棧入棧問題有許多的變種,比如n個人拿5元、n個人拿10元買物品,物品5元,老闆沒零錢。問有幾種排隊方式。熟悉棧的同學很容易就能把這個問題轉換爲棧。值得注意的是,由於每個拿5元的人排隊的次序不是固定的,所以最後求得的答案要
n!。拿10元的人同理,所以還要
n!。所以這種變種的最後答案爲h(n)*n!*n!。

 2、二叉樹構成問題。有n個結點,問總共能構成幾種不同的二叉樹。
        我們可以假設,如果採用中序遍歷的話,根結點第k個被訪問到,則根結點的左子樹有k-1個點、根結點的右指數有n-k個點。k的取值範圍爲1到n。講到這裏就很明顯看得出是卡特蘭數了。這道題出現在2015年騰訊實習生的在線筆試題中。有參加過的同學想必都有印象。

 3、凸多邊形的三角形劃分。一個凸的n邊形,用直線連接他的兩個頂點使之分成多個三角形,每條直線不能相交,問一共有多少種劃分方案。
         這也是非常經典的一道題。我們可以這樣來看,選擇一個基邊,顯然這是多邊形劃分完之後某個三角形的一條邊。圖中我們假設基邊是p1pn,我們就可以用p1、pn和另外一個點假設爲pi做一個三角形,並將多邊形分成三部分,除了中間的三角形之外,一邊是i邊形,另一邊是n-i+1邊形。i的取值範圍是2到n-1。所以本題的解c(n)=c(2)*c(n-1)+c(3)*c(n-2)+...c(n-1)*c(2)。令t(i)=c(i+2)。則t(i)=t(0)*t(i-1)+t(1)*t(i-2)...+t(i-1)*t(0)。很明顯,這就是一個卡特蘭數了。
        
    4、其他。諸如括號匹配問題、01序列問題、n邊形格子從左下角走到右上角不跨過對角線問題。這些都是卡特蘭數,其他問題也基本上是上面問題的變種。證明過程就不再贅述了。

兩類斯特林數

第一類斯特林數

意義:[nm]\begin{bmatrix}n\\m\end{bmatrix}表示nn元素分成mm個環的方案數
[nm]=[n1m1]+(n1)[n1m]\begin{bmatrix}n\\m \end{bmatrix} = \begin{bmatrix}n-1\\m-1\end{bmatrix}+(n-1) * \begin{bmatrix} n-1\\m \end{bmatrix}
理解:考慮從n1n−1個元素推過來,如果兩個空環肯定是不符合的空一個環則單獨成環,如果n1n−1的時候就沒有空環就任意放在一個元素前
性質n!=i=0n[ni]n! = \sum\limits_{i = 0}^{n}\begin{bmatrix}n\\i\end{bmatrix}
##第二類斯特林數
{nm}\begin{Bmatrix} n\\m\end{Bmatrix}表示nn個有區別的小球丟進mm個無區別的盒子的方案數。
計算:
{nm}={n1m1}+m{n1m}\begin{Bmatrix}n\\m\end{Bmatrix}=\begin{Bmatrix}n-1\\m-1\end{Bmatrix}+m*\begin{Bmatrix}n-1\\m\end{Bmatrix}
性質
mn=i=0m{ni}i!C(m,i)m^n=\sum\limits_{i=0}^{m}\begin{Bmatrix}n\\i\end{Bmatrix}*i!*C(m,i)
反正我覺得聯賽也考不到這玩意,既然L喊看一下就瞭解一下吧。
#注意
附上幾組卡特蘭數方便考試的時候快速反應過來
f(1)=1f(1) = 1
f(2)=2f(2) = 2
f(3)=5f(3) = 5
f(4)=14f(4) = 14
f(5)=42f(5) = 42
f(6)=132f(6) = 132

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章