1. 程式人生 > >卡特蘭數catalan證明及應用舉例

卡特蘭數catalan證明及應用舉例

卡塔蘭數是組合數學中一個常在各種計數問題中出現的數列。其計算公式是

C n = C
2 n n n + 1 = ( 2 n
) !
( n + 1 ) ! n !
,
n

由計算公式很容易匯出其遞推公式為 C 0 = 1 , C n = 2 ( 2 n + 1 ) n + 2 C n 1
卡特蘭數列的前四項是1,1,2,5,…

應用
1. C n 表示長度2n的dyck word的個數。Dyck word是一個有n個X和n個Y組成的字串,且所有的字首字串皆滿足X的個數大於等於Y的個數。以下為長度為6的dyck words:
XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY
2. 將上例的X換成左括號,Y換成右括號,Cn表示所有包含n組括號的合法運算式的個數:
((())) ()(()) ()()() (())() (()())
3. C n 表示所有在n × n格點中不越過對角線的單調路徑的個數。一個單調路徑從格點左下角出發,在格點右上角結束,每一步均為向上或向右。計算這種路徑的個數等價於計算Dyck word的個數:X代表“向右”,Y代表“向上”。
4. 電影院買票找零問題:有2n個人排隊進電影院,票價是50美分。在這2n個人當中,其中n個人只有50美分,另外n個人有1美元(紙票子)。愚蠢的電影院開始賣票時1分錢也沒有。問:有多少種排隊方法使得每當一個擁有1美元買票時,電影院都有50美分找錢
注:1美元=100美分,擁有1美元的人,擁有的是紙幣,沒法破成2個50美分

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

考慮一個含n個1、n個0的2n位二進位制數,掃描到第2m+1位上時有m+1個0和m個1(容易證明一定存在這樣的情況),則後面的0-1排列中必有n-m個1和n-m-1個0。為了便於求解不滿足要求的情況(即掃描到某一位時經過的0數多於1數)數,將2m+2及其以後的部分0變成1、1變成0(一一對映,情況數是相等的),則對應一個n+1個0和n-1個1的二進位制數。從而

C n = C 2 n n C 2 n n + 1 = ( 2 n ) ! n ! n ! ( 2 n ! ) ( n + 1 ) ! ( n 1 ) ! = ( 1 1 n + 1 n ) ( 2 n ) ! n ! n ! = C 2 n n n + 1

參考資料:
1. 維基百科卡特蘭數