#卡特蘭數
通項公式:
1:
2:
常用變形3:
4.
#應用
有一個長度爲的01序列,其中1,0各個,要求對於任意的整數數列的前個數中,1的個數不少於0。
我們把01操作看成是在平面直角座標系中行走,1向右上走,0向左下走最後一定走到了如圖
那麼路徑的數量就是在步中選擇步,結果是,然後加入一個限制條件,對於:對於任意前綴,1的個數不少於0。
那麼轉化到座標系中,也就是說走的路徑不應該穿過x軸,即直線$ y=0y=-1$。
於是我們把與 的接觸點的右邊整條路徑以爲對稱軸翻折,於是終點變爲了。如下圖:
那麼此時,從 到 的路徑必定至少穿過一次 ,不滿足條件,那麼此時的路徑數量即爲總路徑數中不符合題意的路徑數,那麼我們用總路徑數減去不符合的路徑數,就是最終的答案。
而此時的路徑數量也很簡單,由於反轉後終點向下移了兩位,也就意味着 步是1, 步是0,總方案 ,那麼最終的答案就是
誒,這不就是卡特蘭數嗎。
卡特蘭數應用
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邊形格子從左下角走到右上角不跨過對角線問題。這些都是卡特蘭數,其他問題也基本上是上面問題的變種。證明過程就不再贅述了。
兩類斯特林數
第一類斯特林數
意義:表示元素分成個環的方案數
理解:考慮從個元素推過來,如果兩個空環肯定是不符合的空一個環則單獨成環,如果的時候就沒有空環就任意放在一個元素前
性質
##第二類斯特林數
表示個有區別的小球丟進個無區別的盒子的方案數。
計算:
性質
反正我覺得聯賽也考不到這玩意,既然L喊看一下就瞭解一下吧。
#注意
附上幾組卡特蘭數方便考試的時候快速反應過來