組合數學 卡特蘭數

2022-03-29 22:09:09 字數 2581 閱讀 9185

我們以一道題為例來介紹卡特蘭數:

給定n

'>n

個0'>0

和n'>n個1

'>1,它們將按照某種順序排成長度為2

n'>2n的序列,求它們能排列成的所有序列中,能夠滿足任意字首序列中0

'>0的個數都不少於1

'>1的個數的序列有多少個。

輸出的答案對109+

7'>109

+7取模。

109+

7'>為了便於解決,我們可以把這個問題轉化成:

109+

7'>給定乙個n*n的矩陣,每一步只能往右走或者往上走,求從左下角頂點走到右上角頂點所有方案中,往右走的步數不少於往上走的步數的方案的數量,並且對109+7取模。

109+

7'>我們再將目標進行一步轉化:

109+

7'>合法路徑數 = 總路徑數 - 非法路徑數

109+

7'>其中總路徑數顯然為組合數c12

6,故接下去只需求非法路徑數即可。109

+7'>我們舉n=6的例項來看:109

+7'>如下圖:109

'>從(0,0)走到(6,6)的路徑所有路徑就是總路徑。109

+7'>顯然,所有黑線以下的路徑皆為合法路徑,如圖中綠線所示路徑就是一條合法路徑。109

+7'>而任何一條經過紅線的路徑一定是非法路徑,如圖中藍線所示路徑。109

+7'>那麼我們將該非法路徑第一次經過紅線後的部分關於紅線作對稱,如圖中黃線所示。109

+7'>不難發現,任何一條非法路徑進行如上的對稱操作後終點一定是(5,7)。109

+7'>進而又可以發現,從(0,0)到(5,7)的任何一條路徑進行如上對稱操作後一定是一條非法路徑。109

+7'>故從(0,0)到(5,7)的路徑與非法路徑構成雙射。109

+7'>那麼顯然,非法路徑數即是組合數c12

5。109+

7'>所以合法路徑數就是c126 - c125。109

+7'>而我們又可以發現,c2n

n - c2n

n-1 = c2n

n/(n+1)。109

+7'>這就是卡特蘭數。109

+7'>而上述該題正是卡特蘭數的乙個應用。

卡特蘭數:

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

原理:

設h(n)為catalan數的第n項,令h(0)=1,h(1)=1,catalan數滿足遞推式:

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

另類遞推式:

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

遞推關係的解為:

h(n)=c(2n,n)/(n+1) (n=0,1,2,...)

遞推關係的另類解為:

h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)

卡特蘭數的常見應用:

一、出棧次序

乙個棧(無窮大)的進棧序列為1,2,3,…,n,有多少個不同的出棧序列?

二、括號化

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

三、凸多邊形三角劃分

在乙個凸多邊形中,通過若干條互不相交的對角線,把這個多邊形劃分成了若干個三角形。任務是鍵盤上輸入凸多邊形的邊數n,求不同劃分的方案數f(n)。比如當n=6時,f(6)=14。

四、給定節點組成二叉搜尋樹

給定n個

節點,能構成多少種不同的

二叉搜尋樹

?(能構成h(n)個)

五、n對括號正確匹配數目
給定n對括號,求括號正確配對的字串數。

組合數學 卡特蘭數總結

卡特蘭數 問題 n對括號有多少種合法的匹配方式?卡特蘭數的常見應用之一 結論 對於n對括號,合法的排列共有c n,2n c n 1,2n 基本思路 考慮n對括號,有n個 和n個 對於任意乙個 其前面必定有乙個 跟他對應,如果沒有則是非法序列。也就是說,對於 其前面的 的數量必須大於等於 的數量。假設...

神奇的組合數學 卡特蘭數

定義 令h 0 1 h 1 1 catalan數滿足遞推式。h n h 0 h n 1 h 1 h n 2 h n 1 h 0 n 2 通項公式 證明如下 摘自taocp的原練習題 數競黨很少用不嚴格證明的定理 1.括號對 合法的括號對對數答案為h n 2.二叉樹 合法的樹有答案為h n 3.分多邊...

數學 組合數學 Lucas定理 卡特蘭數

n n的方格,從左上到右下畫一條線。乙個機械人從左上走到右下,只能向右或向下走。並要求只能在這條線的上面或下面走,不能穿越這條線,有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10007的結果。卡特蘭數 lucas定理 此題就是乙個模板題 include include include...