1. 程式人生 > >【interview】卡特蘭數

【interview】卡特蘭數

涉及卡特蘭數的題目列舉,也是組合數學中一些例子:

詳解連結 https://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0

 

1. n個節點的二叉樹有多少種形態?

  Cn表示有2n+1個節點組成不同構滿二叉樹(full binary tree)的方案數。

  下圖中,n等於3,圓形表示內部節點,月牙形表示外部節點。本質同上。

        

 

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

  • Cn表示所有包含n組括號的合法運算式的個數:((())) ()(()) ()()() (())() (()()) 

3. 一個棧(無窮大)的進棧序列為1,2,3,..n,有多少個不同的出棧序列? 
4. 有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?(將持5元者到達視作將5元入棧,持10元者到達視作使棧中某5元出棧) 
5. 將一個凸多邊形區域分成三角形區域的方法數? 

  • Cn表示通過連結頂點而將n + 2邊的
    凸多邊形
    分成三角形的方法個數。下圖中為n = 4的情況:
        Catalan-Hexagons-example.svg


6. 在圓上選擇2n個點,將這些點成對連線起來,使得所得到的n條線段不相交的方法數。 
7. 一位大城市的律師在她住所以北n個街區和以東n個街區處工作。每天她走2n個街區去上班。如果她從不穿越(但可以碰到)從家到辦公室的對角線,那麼有多少條可能的道路?

  • Cn表示所有在n × n格點中不越過對角線的單調路徑的個數。一個單調路徑從格點左下角出發,在格點右上角結束,每一步均為向上或向右。計算這種路徑的個數等價於計算Dyck word的個數:X代表“向右”,Y代表“向上”。下圖為n
     = 4的情況:
Catalan number 4x4 grid example.svg

8. Cn表示長度2n的dyck word的個數。Dyck word是一個有n個X和n個Y組成的字串,且所有的字首字串皆滿足X的個數大於等於Y的個數。以下為長度為6的dyck word: XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY

  證明:

  令1表示進棧,0表示出棧,則可轉化為求一個2n位、含n個1、n個0的二進位制數,滿足從左往右掃描到任意一位時,經過的0數不多於1數。顯然含n個1、n個0的2n位二進位制數共有{2n \choose n}個,下面考慮不滿足要求的數目。

  考慮一個含n個1、n個0的2n位二進位制數,掃描到第2m+1位上時有m+1個0和m個1(容易證明一定存在這樣的情況),則後面的0-1排列中必有n-m個1和n-m-1個0。將2m+2及其以後的部分0變成1、1變成0,則對應一個n+1個0和n-1個1的二進位制數。反之亦然(相似的思路證明兩者一一對應)。

從而C_n = {2n \choose n} - {2n \choose n + 1} = \frac{1}{n+1}{2n \choose n}。證畢。

9.

  • Cn表示用n個長方形填充一個高度為n的階梯狀圖形的方法個數。下圖為n = 4的情況:
Catalan stairsteps 4.svg

 

 

 

什麼是卡特蘭數?

f(n)=f(n-1)f(0)+f(n-2)f(1)+……….+f(1)f(n-2)+f(0)f(n-1) 
該數列稱為卡特蘭數(Catalan數),該遞推關係的解為: 

 

 

 

參考博文:

https://blog.csdn.net/adminabcd/article/details/46672759