卡特蘭數

什麼是Catalan數

說到Catalan數,就不得不提及Catalan序列,Catalan序列是一個整數序列,其通項公式是C_n = /frac{1}{n+1}{2n/choose n} = /frac{(2n)!}{(n+1)!/,n!} /quad n/ge 0我們從中取出的C_n就叫做第n個Catalan數,前幾個Catalan數是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, …咋看之下沒什麼特別的,但是Catalan數卻是許多計數問題的最終形式。

Catalan數的一些性質

Catalan數的基本公式就是上個部分所列出的那樣,但是卻有一些變形和具體的性質:

1、C_n = {2n/choose n} - {2n/choose n+1} /quad n/ge 0

這是根據原來的式子推導出來的,大概過程是這樣的:C_n = /frac{1}{n+1}{2n/choose n} = {2n/choose n} -  /frac{n}{n+1}{2n/choose n} = {2n/choose n} -  {2n/choose n + 1}

2、C_0 = 1 /quad , /quad C_{n+1}=/frac{2(2n+1)}{n+2}C_n

這個遞推式很容易可以從原來的式子中獲得

3、/begin{displaymath}C_0 = 1 /quad , /quad C_{n+1}=/sum_{i=0}^{n}C_i/,C_{n-i}/quad n/ge 0/end{displaymath}

4、/begin{displaymath}C_n= /frac 1{n+1} /sum_{i=0}^n {n /choose i}^2/end{displaymath}

5、/begin{displaymath}C_n /sim /frac{4^n}{n^{/frac{3}{2}}/sqrt{/pi}}/end{displaymath}

這個是Catalan數的增長趨勢。

Catalan數在組合計算中的應用

在《組合數學》(機械工業出版社)一書中,介紹Catalan數是由其一個應用推導出的公式,其具體的描述如下:

n個+1和n個-1構成2n項a_1,a_2,...,a_n,其部分和滿足a_1 + a_2 + ... + a_k /ge 0 /quad , /quad 0 /le k /le 2n的序列個數等於第n個Catalan數C_n

其證明也不難,我們假設不滿足條件的序列個數爲U_n,那麼就有C_n + U_n = {2n /choose n}。剩下的工作就是求U_n了,我們假設有一個最小的k令a_1 + a_2 + ... + a_k < 0。由於這裏k是最小的,所以必有a_1 + a_2 + ... + a_{k - 1} = 0 /quad , /quad a_k = -1,並且k是一個奇數。此時我們將前k項中的+1變爲-1,將-1變爲+1,那麼就得到一個有(n+1)個+1和(n-1)個-1的序列了,這樣的序列個數就是我們要求的U_n,數值大小爲 U_n = {2n/choose n + 1}。那麼我們就得到了C_n = {2n/choose n} - U_n = {2n/choose n} - {2n/choose n + 1}}},就是我們前面的公式。

在具體的組合數問題中,很多都可以轉換爲Catalan數進行最後的計算,如下:

1、如上文所說,對於任意的k,前k個元素中-1的個數小等於+1的個數的序列計數,我們可以不停地變換形式,比如將-1看成右括號,+1看成左括號,就變成了合法括號表達式的個數。比如2個左括號和2個右括號組成的合法表達式有C_2 = 2種,是()()和(())。

2、既然如上一點都把括號加上去了,那麼順便就再次轉換,n+1個數連乘,乘法順序有C_n種,比如我們三個數連乘a*b*c,那麼等於在式子上加括號,有2種乘法順序,分別是(ab)c和a(bc)。貌似對應關係比較模糊,我們取n爲3來看看,n爲3的時候就是4個數相乘了,那麼我們設爲abcd,最初的標號定在a上,我們對於n爲3得到合法的括號序列有5個,分別是:((())),()(()),()()(),(())()和(()()),那麼我們將一個左括號看成是當前操作數指針往右移動一個位置,一個右括號看成是當前操作數和左邊最近的一塊操作數相乘起來,那麼對應的五個表達式就是:a(b(cd)),(ab)(cd),((ab)c)d,(a(bc))d和a((bc)d),他們之間是一一對應關係。

3、n個節點的二叉樹的所有可能形態數爲C_n,這一點很容易證明,我們考慮隨便取一個節點作爲根,那麼他左邊和右邊的兒子節點個數就確定了,假定根節點標號爲x,那麼左子樹的標號就從1到x-1,共x-1個,右子樹的標號就從x+1到n,共n-x個,那麼我們的x從1取到n,就獲得了所有的情況數/begin{displaymath}C_n = /sum_{i = 0}^{n - 1}C_i/,C_{n - i - 1}/end{displaymath}。這個式子就是我們性質3的式子。

4、n個非葉節點的滿二叉樹的形態數(對稱後得到的二叉樹除非自己本身對稱,否則算是不同),這裏取Wikipedia上的一張圖片說明問題:

這裏要求滿二叉樹,實際上就是在上一點的每個子節點的空兒子上都加上葉子,就形成了我們的圖了,那麼我們要求的結果就是Catalan數。

5、對於一個n*n的正方形網格,每次我們能向右或者向上移動一格,那麼從左下角到右上角的所有在副對角線右下方的路徑總數爲C_n。同樣引用Wikipedia上的一張圖片來表示:

我們將一條水平邊記爲+1,垂直邊記爲-1,那麼就組成了一個n個+1和n個-1的序列,我們所要保證的就是前k步中水平邊的個數不小於垂直邊的個數,換句話說前k個元素的和非負,就是我們關於Catalan數的定義。

6、凸n+2邊形進行三角形分割(只連接頂點對形成n個三角形)數:

7、n個數入棧後的出棧的排列總數是C_n。例如1,2,3入棧的出棧排序有123,132,213,231和321五種

8、對於集合/{1,2,...,2n/}的不交叉劃分的數目爲C_n,這裏解釋一下不交叉劃分,我們對於集合{a,b}和{c,d},假設他們組成了兩個區間[a,b]和[c,d],我們假設兩個區間不重合,那麼以下四種情況當做是不交叉的:a<c<d<b,a<b<c<d,c<a<b<d與c<d<a<b,就是說兩個區間可以包含或者相離,那麼此時我們稱集合{a,b}和{c,d}是不交叉的。對於集合/{1,2,...,2n/},將裏面元素兩兩分爲一子集,共n個,若任意兩個子集都是不交叉的,那麼我們稱此時的這個劃分爲一個不交叉劃分。此時不交叉的劃分數就是我們的C_n了,證明也很容易,我們將每個子集中較小的數用左括號代替,較大的用右括號代替,那麼帶入原來的1至2n的序列中就形成了合法括號問題,就是我們第二點的結論。例如我們的集合{1,2,3,4,5,6}的不交叉劃分有五個:{{1,2},{3,4},{5,6}},{{1,2},{3,6},{4,5}},{{1,4},{2,3},{5,6}},{{1,6},{2,3},{4,5}}和{{1,6},{2,5},{3,4}}。

9、n層的階梯切割爲n個矩形的切法數也是C_n。如下圖所示:

 這個證明是怎麼進行的呢?我們先繪製如下的一張圖片,即n爲5的時候的階梯:

我們注意到每個切割出來的矩形都必需包括一塊標示爲*的小正方形,那麼我們此時枚舉每個*與#標示的兩角作爲矩形,剩下的兩個小階梯就是我們的兩個更小的子問題了,於是我們的C_5 = C_0 * C_4 + C_1 * C_3 + C_2 * C_2 + C_1 * C_3 + C_0 * C_4注意到這裏的式子就是我們前面的性質3,因此這就是我們所求的結果了。

10、在一個2*n的格子中填入1到2n這些數值使得每個格子內的數值都比其右邊和上邊的所有數值都小的情況數也是C_n

11、平面上連接可以形成凸包的2n個點分成2個一組連成n條線段,兩兩線段之間不相交的情況總數是C_n,這裏實際上和第7點本質上是一樣的,這裏就不解釋了。

Catalan數問題的一個變形:

n+m個人排隊買票,並且滿足n /ge m,票價爲50元,其中n個人各手持一張50元鈔票,m個人各手持一張100元鈔票,除此之外大家身上沒有任何其他的錢幣,並且初始時候售票窗口沒有錢,問有多少種排隊的情況數能夠讓大家都買到票。

這個題目是Catalan數的變形,不考慮人與人的差異,如果m=n的話那麼就是我們初始的Catalan數問題,也就是將手持50元的人看成是+1,手持100元的人看成是-1,任前k個數值的和都非負的序列數。

這個題目區別就在於n>m的情況,此時我們仍然可以用原先的證明方法考慮,假設我們要的情況數是D_{n+m},無法讓每個人都買到的情況數是U_{n + m},那麼就有D_{n + m} + U_{n +m} = {n + m /choose n},此時我們求U_{n + m},我們假設最早買不到票的人編號是k,他手持的是100元並且售票處沒有錢,那麼將前k個人的錢從50元變成100元,從100元變成50元,這時候就有n+1個人手持50元,m-1個手持100元的,所以就得到U_{n + m} = {n + m /choose n + 1},於是我們的結果就因此得到了,表達式是D_{n + m} = {n + m /choose n} - {n + m /choose n + 1}

關於Catalan數的變形還有很多,本身組合數學就是一門十分有趣的學科,通過不停地分析,求解我們能夠不斷增加自己思維的嚴謹性和全面性。

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