卡特蘭數的初步學習

2022-05-10 10:36:34 字數 3876 閱讀 2183

一、關於卡特蘭數

卡特蘭數是一種經典的組合數,經常出現在各種計算中,其前幾項為 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...

二、卡特蘭數的一般公式

卡特蘭數滿足以下性質:

令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(i)*h(n-i-1) 相加= n-1。也就是說,如果能把公式化成上面這種形式的數,就是卡特蘭數

當然,上面這樣的遞推公式太繁瑣了,於是數學家們又求出了可以快速計算的通項公式。h(n)=c(2n,n)-c(2n,n+1)(n=0,1,2,...)。這個公式還可以更簡單得化為h(n)=c(2n,n)/(n+1)。後乙個公式都可以通過前乙個公式經過幾步簡單的演算得來,大家可以拿起筆試試,一兩分鐘就可以搞定。

三、卡特蘭數的應用

卡特蘭數經常出現在oi以及acm中,在生活中也有廣泛的應用。下面舉幾個例子。

1、出棧次序:乙個棧(無窮大)的進棧次序為1、2、3……n。不同的出棧次序有幾種。

我們可以這樣想,假設k是最後乙個出棧的數。比k早進棧且早出棧的有k-1個數,一共有h(k-1)種方案。比k晚進棧且早出棧的有n-k個數,一共有h(n-k)種方案。所以一共有h(k-1)*h(n-k)種方案。顯而易見,k取不同值時,產生的出棧序列是相互獨立的,所以結果可以累加。k的取值範圍為1至n,所以結果就為h(n)=

h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0)。

出棧入棧問題有許多的變種,比如n個人拿5元、n個人拿10元買物品,物品5元,老闆沒零錢。問有幾種排隊方式。熟悉棧的同學很容易就能把這個問題轉換為棧。值得注意的是,由於每個拿5元的人排隊的次序不是固定的,所以最後求得的答案要*n!。拿10元的人同理,所以還要*n!。所以這種變種的最後答案為h(n)*n!*n!。

2、二叉樹構成問題。有n個結點,問總共能構成幾種不同的二叉樹。

3、凸多邊形的三角形劃分。乙個凸的n邊形,用直線連線他的兩個頂點使之分成多個三角形,每條直線不能相交,問一共有多少種劃分方案。

這也是非常經典的一道題。我們可以這樣來看,選擇乙個基邊,顯然這是多邊形劃分完之後某個三角形的一條邊。圖中我們假設基邊是p1pn,我們就可以用p1、pn和另外乙個點假設為pi做乙個三角形,並將多邊形分成三部分,除了中間的三角形之外,一邊是i邊形,另一邊是n-i+1邊形。i的取值範圍是2到n-1。所以本題的解c(n)=c(2)*c(n-1)+c(3)*c(n-2)+...c(n-1)*c(2)。令t(i)=c(i+2)。則t(i)=t(0)*t(i-1)+t(1)*t(i-2)...+t(i-1)*t(0)。很明顯,這就是乙個卡特蘭數了。

4、其他。諸如括號匹配問題、01序列問題、n邊形格仔從左下角走到右上角不跨過對角線問題。這些都是卡特蘭數,其他問題也基本上是上面問題的變種。證明過程就不再贅述了。

四、卡特蘭數通項公式的證明。

下面這篇文章**並茂、寫得很好,我沒有把握寫得比他更好。大家想看可以點鏈結。

分類: 數學題

一、關於卡特蘭數

卡特蘭數是一種經典的組合數,經常出現在各種計算中,其前幾項為 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...

二、卡特蘭數的一般公式

卡特蘭數滿足以下性質:

令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(i)*h(n-i-1) 相加= n-1。也就是說,如果能把公式化成上面這種形式的數,就是卡特蘭數

當然,上面這樣的遞推公式太繁瑣了,於是數學家們又求出了可以快速計算的通項公式。h(n)=c(2n,n)-c(2n,n+1)(n=0,1,2,...)。這個公式還可以更簡單得化為h(n)=c(2n,n)/(n+1)。後乙個公式都可以通過前乙個公式經過幾步簡單的演算得來,大家可以拿起筆試試,一兩分鐘就可以搞定。

三、卡特蘭數的應用

卡特蘭數經常出現在oi以及acm中,在生活中也有廣泛的應用。下面舉幾個例子。

1、出棧次序:乙個棧(無窮大)的進棧次序為1、2、3……n。不同的出棧次序有幾種。

我們可以這樣想,假設k是最後乙個出棧的數。比k早進棧且早出棧的有k-1個數,一共有h(k-1)種方案。比k晚進棧且早出棧的有n-k個數,一共有h(n-k)種方案。所以一共有h(k-1)*h(n-k)種方案。顯而易見,k取不同值時,產生的出棧序列是相互獨立的,所以結果可以累加。k的取值範圍為1至n,所以結果就為h(n)=

h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0)。

出棧入棧問題有許多的變種,比如n個人拿5元、n個人拿10元買物品,物品5元,老闆沒零錢。問有幾種排隊方式。熟悉棧的同學很容易就能把這個問題轉換為棧。值得注意的是,由於每個拿5元的人排隊的次序不是固定的,所以最後求得的答案要*n!。拿10元的人同理,所以還要*n!。所以這種變種的最後答案為h(n)*n!*n!。

2、二叉樹構成問題。有n個結點,問總共能構成幾種不同的二叉樹。

3、凸多邊形的三角形劃分。乙個凸的n邊形,用直線連線他的兩個頂點使之分成多個三角形,每條直線不能相交,問一共有多少種劃分方案。

這也是非常經典的一道題。我們可以這樣來看,選擇乙個基邊,顯然這是多邊形劃分完之後某個三角形的一條邊。圖中我們假設基邊是p1pn,我們就可以用p1、pn和另外乙個點假設為pi做乙個三角形,並將多邊形分成三部分,除了中間的三角形之外,一邊是i邊形,另一邊是n-i+1邊形。i的取值範圍是2到n-1。所以本題的解c(n)=c(2)*c(n-1)+c(3)*c(n-2)+...c(n-1)*c(2)。令t(i)=c(i+2)。則t(i)=t(0)*t(i-1)+t(1)*t(i-2)...+t(i-1)*t(0)。很明顯,這就是乙個卡特蘭數了。

4、其他。諸如括號匹配問題、01序列問題、n邊形格仔從左下角走到右上角不跨過對角線問題。這些都是卡特蘭數,其他問題也基本上是上面問題的變種。證明過程就不再贅述了。

四、卡特蘭數通項公式的證明。

下面這篇文章**並茂、寫得很好,我沒有把握寫得比他更好。大家想看可以點鏈結。

卡特蘭數,高精度卡特蘭數

簡單介紹 卡特蘭數是組合數學中常常出現的乙個數列。個人認為不管是遞推公式還是代表的含義都比斐波那契數列難理解一些。遞推公式 應用 1.cn表示長度2n的dyck word的個數。dyck word是乙個有n個x和n個y組成的字串。且全部的字首字串皆滿足x的個數大於等於y的個數。下面為長度為6的dyc...

卡特蘭數和超級卡特蘭數

這篇部落格主要是想講一下超級卡特蘭數 大施洛德數 順帶就想講一下卡特蘭數.卡特蘭數記為 c n c 1 1 forall n geq 2,c n sum c i c 前幾項大概是 1,1,2,5,14,42,132.直接遞推未免效率太低,我們考慮用生成函式優化.顯然有 c x c x 2 x 解得 ...

學習筆記 卡特蘭數

鑑於noip初賽考到了卡特蘭數.整理一下。湊合著看。一 介紹 卡特蘭數是一種經典的組合數,經常出現在各種計算中,其前幾項為 1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,1296447...