Catalan數

卡特蘭數又稱卡塔蘭數,是組合數學中一個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁·查理·卡塔蘭 (1814–1894)命名。

原理

令h(0)=1,h(1)=1,catalan數滿足遞推式[1]:

h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)

例如:h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2

h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5

另類遞推式[2]:

h(n)=h(n-1)*(4*n-2)/(n+1);

遞推關係的解爲:

h(n)=C(2n,n)/(n+1) (n=1,2,3,...)

遞推關係的另類解爲:

h(n)=c(2n,n)-c(2n,n+1)(n=1,2,3,...)

卡特蘭數的應用

總結了一下,最典型的四類應用:(實質上卻都一樣,無非是遞歸等式的應用,就看你能不能分解問題寫出遞歸式了)

1.括號化問題。

矩陣鏈乘: P=a1×a2×a3×……×an,依據乘法結合律,不改變其順序,只用括號表示成對的乘積,試問有幾種括號化的方案?(h(n)種)

2.出棧次序問題。

一個棧(無窮大)的進棧序列爲1,2,3,..n,有多少個不同的出棧序列?

類似:有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?(將持5元者到達視作將5元入棧,持10元者到達視作使棧中某5元出棧)

3.將多邊行劃分爲三角形問題。

將一個凸N+2多邊形區域分成三角形區域的方法數?

類似:一位大城市的律師在她住所以北n個街區和以東n個街區處工作。每天她走2n個街區去上班。如果她

從不穿越(但可以碰到)從家到辦公室的對角線,那麼有多少條可能的道路?

類似:在圓上選擇2n個點,將這些點成對連接起來使得所得到的n條線段不相交的方法數?

4.給頂節點組成二叉樹的問題。

給定N個節點,能構成多少種不同的二叉樹?

(能構成h(N)個)

Catalan數的解法

Catalan數的組合公式爲 Cn=C(2n,n) / (n+1);

此數的遞歸公式爲 h(n ) = h(n-1)*(4*n-2) / (n+1)

卡特蘭數真是一個神奇的數字,很多組合問題的數量都和它有關係,例如:

Cn= n對括號正確匹配組成的字符串數,例如 3對括號能夠組成:

((())) ()(()) ()()() (())() (()())

Cn= n+1個數相乘,所有的括號方案數。例如, 4個數相乘的括號方案爲:

((ab)c)d (a(bc))d (ab)(cd) a((bc)d) a(b(cd))

Cn= 擁有 n+1 個葉子節點的二叉樹的數量。例如 4個葉子節點的所有二叉樹形態:

卡特蘭數 - lz_666888 - lz_666888的博客

  • Cn=n*n的方格地圖中,從一個角到另外一個角,不跨越對角線的路徑數,例如, 4×4方格地圖中的路徑有:

卡特蘭數 - lz_666888 - lz_666888的博客

  • Cn= n+2條邊的多邊形,能被分割成三角形的方案數,例如 6邊型的分割方案有:

卡特蘭數 - lz_666888 - lz_666888的博客

  • Cn= 圓桌周圍有 2n個人,他們兩兩握手,但沒有交叉的方案數。


下面是一些大公司的筆試題

先來一道阿里巴巴的筆試題目:說16個人按順序去買燒餅,其中8個人每人身上只有一張5塊錢,另外8個人每人身上只有一張10塊錢。燒餅5塊一個,開始時燒餅店老闆身上沒有錢。16個顧客互相不通氣,每人只買一個。問這16個人共有多少種排列方法能避免找不開錢的情況出現。

C8=1430,所以總數=1430*8!*8!

2012騰訊實習招聘筆試題

在圖書館一共6個人在排隊,3個還《面試寶典》一書,3個在借《面試寶典》一書,圖書館此時沒有了面試寶典了,求他們排隊的總數?

C3=5;所以總數爲5*3!*3!=180.


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