1. 程式人生 > >卡特蘭數 Catalan數 ( ACM 數論 組合 )

卡特蘭數 Catalan數 ( ACM 數論 組合 )

卡塔蘭數

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

卡塔蘭數的一般項公式為 C_n = \frac{1}{n+1}{2n \choose n} = \frac{(2n)!}{(n+1)!n!}                      另類遞迴式:  h(n)=((4*n-2)/(n+1))*h(n-1);

前幾項為 (OEIS中的數列A000108): 1, 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, ...

性質

Cn的另一個表達形式為C_n = {2n\choose n} - {2n\choose n-1} \quad\mbox{ for }n\ge 1 所以,Cn是一個自然數;這一點在先前的通項公式中並不顯而易見。這個表達形式也是André對前一公式證明的基礎。(見下文的第二個證明。)

卡塔蘭數滿足以下遞推關係

C_0 = 1 \quad \mbox{and} \quad C_{n+1}=\sum_{i=0}^{n}C_i\,C_{n-i}\quad\mbox{for }n\ge 0.

它也滿足

C_0 = 1 \quad \mbox{and} \quad C_{n+1}=\frac{2(2n+1)}{n+2}C_n,

這提供了一個更快速的方法來計算卡塔蘭數。

卡塔蘭數的漸近增長為

C_n \sim \frac{4^n}{n^{3/2}\sqrt{\pi}}

它的含義是左式除以右式的商趨向於1當n → ∞。(這可以用n!的斯特靈公式來證明。)

所有的奇卡塔蘭數Cn都滿足n = 2k − 1。所有其他的卡塔蘭數都是偶數。

應用

組合數學中有非常多.的組合結構可以用卡塔蘭數來計數。在Richard P. Stanley的Enumerative Combinatorics: Volume 2一書的習題中包括了66個相異的可由卡塔蘭數表達的組合結構。以下用C

n=3和Cn=4舉若干例:

問題描述:
12個高矮不同的人,排成兩排,每排必須是從矮到高排列,而且第二排比對應的第一排的人高,問排列方式有多少種?
這個筆試題,很YD,因為把某個遞推關係隱藏得很深。

其實這個排列方式跟下面的“合法的小括號表示式個數題目”類似,要求“每排必須是從矮到高排列”其實就是說是組合數,不是排列數,即不可以交換兩個數來說是這是兩種排列方式。參見卡特蘭數應用,轉換成01排列就容易理解了,把第二排查到對應的第一排人之後,就構成了一種排列。

  • Cn表示長度2n的dyck word的個數。Dyck word是一個有n個X和n個Y組成的字串,且所有的部分字串皆滿足X的個數大於等於Y的個數。以下為長度為6的dyck words:
XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY
  • 將上例的X換成左括號,Y換成右括號,Cn表示所有包含n組括號的合法運算式的個數:
((())) ()(()) ()()() (())() (()())
  • Cn表示有n+1個葉子的二叉樹的個數。

                                                                       

  • Cn表示所有不同構的含n個分枝結點的滿二叉樹的個數。(一個有根二叉樹是滿的當且僅當每個結點都有兩個子樹或沒有子樹。)

證明:

令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}。證畢。

  • Cn表示所有在n × n格點中不越過對角線的單調路徑的個數。一個單調路徑從格點左下角出發,在格點右上角結束,每一步均為向上或向右。計算這種路徑的個數等價於計算Dyck word的個數: X代表“向右”,Y代表“向上”。下圖為n = 4的情況:
  •                                                                         
  • Cn表示通過連結頂點而將n + 2邊的凸多邊形分成三角形的方法個數。下圖中為n = 4的情況:

                                                                                 

  • Cn表示對{1, ..., n}依序進出置換個數。一個置換w是依序進出棧的當S(w) = (1, ..., n), 其中S(w)遞迴定義如下:令w = unv,其中nw的最大元素,uv為更短的數列;再令S(w) =S(u)S(v)n,其中S為所有含一個元素的數列的單位元。
  • Cn表示用n個長方形填充一個高度為n的階梯狀圖形的方法個數。下圖為 n = 4的情況:

                                                                                          

百度百科資料:
簡介

  中文:卡特蘭數
  Catalan數是組合數學中一個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁·查理·卡塔蘭 (
18141894)命名。
  原理:
  令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(n)
=C(2n,n)/(n +1) (n=1,2,3,)
       另類遞迴式:  h(n)=((4*n-2)/(n+1))*h(n-1);
  
  前幾項為 (OEIS中的數列A000108): 
11251442132429143048621679658786208012742900267444096948453535767012964479047763870017672631906564120420244662670209148256364034305961365012899041473244861946401452
應用

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

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

  一個棧(無窮大)的進棧序列為1,
2,3,..n,有多少個不同的出棧序列?
  類似:
  (
1)有2n個人排成一行進入劇場。入場費5元。其中只有n個人有一張5元鈔票,另外n人只有10元鈔票,劇院無其它鈔票,問有多少中方法使得只要有10元的人買票,售票處就有5元的鈔票找零?(將持5元者到達視作將5元入棧,持10元者到達視作使棧中某5元出棧)
  (
2)在圓上選擇2n個點,將這些點成對連線起來,使得所得到的n條線段不相交的方法數。
3.將多邊行劃分為三角形問題。

  將一個凸多邊形區域分成三角形區域的方法數
?
  類似:一位大城市的律師在她住所以北n個街區和以東n個街區處工作。每天她走2n個街區去上班。如果她
  從不穿越(但可以碰到)從家到辦公室的對角線,那麼有多少條可能的道路?
  類似:在圓上選擇2n個點,將這些點成對連線起來使得所得到的n條線段不相交的方法數
?4.給頂節點組成二叉樹的問題。

  給定N個節點,能構成多少種形狀不同的二叉樹?
  (一定是二叉樹
!
  先去一個點作為頂點,然後左邊依次可以取0至N
-1個相對應的,右邊是N-1到0個,兩兩配對相乘,就是h(0)*h(n-1+ h(2)*h(n-2+  + h(n-1)h(0)=h(n))
  (能構成h(N)個)

相關推薦

Catalan)數列

卡特蘭數又稱卡塔蘭數,英文名 Catalan number,是組合數學中一個常出現在各種計數問題中出現的數列。以比利時的數學家歐仁·查理·卡塔蘭 (1814–1894)的名字來命名,其前幾項為 :

數列(Catalan )

簡述 卡特蘭數又稱卡塔蘭數,它是組合數學中一個常出現在各種計數問題中出現的數列,其前幾項為 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, ...... 公式 1.遞迴公式1    

Catalan ( ACM 數論 組合 )

卡塔蘭數 卡塔蘭數是組合數學中一個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁·查理·卡塔蘭 (1814–1894)命名。 卡塔蘭數的一般項公式為                       另類遞迴式:  h(n)=((4*n-2)/(n+1)

(Catalan Number) 演算法、數論 組合~

Catalan number,卡特蘭數又稱卡塔蘭數,是組合數學中一個常出現在各種計數問題中出現的數列。以比利時的數學家歐仁·查理·卡塔蘭 (1814–1894)命名。 卡特蘭數的前幾個數 前20項為(OEIS中的數列A000108):1, 1, 2, 5,

[ACM] hdu 2067 小兔的棋盤(Catalan

小兔的棋盤 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5814    Accepted Submissio

(轉載)Catalan——

出現 註意 城市 ads 大於 編號 只有一個 導致 一個點 Catalan數——卡特蘭數 今天阿裏淘寶筆試中碰到兩道組合數學題,感覺非常親切,但是筆試中失蹤推導不出來後來查了下,原來是Catalan數。悲劇啊,現在整理一下一、Catalan數的定義令h(1)=1,Cata

Catalan

bsp 凸包 net 規律 序列 targe 不同 target 二叉 推薦:卡特蘭數總結 定義 公式 模型與例題 1.火車進棧 luogu棧 2.合法括號序列 牛客9.16普及組T4 3.0/1走 4.凸包三角形劃分。 5.n個點二叉樹不同形態方案數。

P1044 棧 洛谷(數論)()

卡特蘭數 今天 name 出現問題 vector algo main cin n+1 卡特蘭數遞推公式之一(今天剛知道這東西…): f[n] = f[n-1] * (4 * n – 2) /(n + 1) (Ps:聽說在一些數據苛刻的題目中此公式會出現問題?不過對於這道題目

(Catalan)及其應用

入棧 一個 其中 無法 數列 選擇 每天 編號 匹配 卡特蘭數 大佬博客https://blog.csdn.net/doc_sgl/article/details/8880468 卡特蘭數是組合數學中一個常出現在各種計數問題中出現的數列。 卡特蘭數前幾項為 : C0=

棧 | Catalan number)

文章目錄 1.棧與卡特蘭數的關係 2.卡特蘭數 3.擴充套件 4.相關題目 1.棧與卡特蘭數的關係 棧是計算機中經典的資料結構,我們也會遇到一個常見的問題:一共有多少種合法的出棧順序? 先說一下什麼是合法的出棧序列, 凡是

——Catalan Number

卡特蘭數:數學組合中一個常出現在各種計數問題中的數列,以比利時的數學家歐仁·查理·卡特蘭的名字命名。 從第0項開始依次為:1,1,2,5,14,42,132,429,1430,4862, 16796, 58786, 208012, 742900, 2674440, 9694845

<Catalan>楊輝三角實現計算方法

算是刷到一個比較好的方法吧 計算卡特蘭數(Catalan) h(n)=C(2n,n)-C(2n,n-1)     #include<cstdio> #define siz 20 using namespace std; int n; int c[siz*

Catalan——

一、Catalan數的定義   令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(n) = C(2n,n)/(n+1),

catalan number)

1.  卡特蘭數是什麼       卡塔蘭數是組合數學中一個常在各種計數問題中出現的數列。 公式為 : 前幾項為 (n=0,1,2,3,4,5時):     1, 1, 2, 5, 14, 42

Catalan()及定理的簡要證明------附上簡要程式碼

        Catalan數很重要, 學計算機的, 沒有不知道這個的, 我這個非計算機專業的學生, 也來湊湊熱鬧:           catalan數和上述定理的應用非常普遍, 也是很多IT公司筆試面試的常考點之一, 其變換方式層出不窮, 有興趣的朋友可以百

Catalan)的原理和題目

Catalan數的定義令h(1)=1,Catalan數滿足遞迴式:h(n) = h(1)*h(n-1) +h(2)*h(n-2) + ... + h(n-1)h(1),n>=2該遞推關係的解為: 證明: 令1表示進棧,0表示出棧,則可轉化為求一個2n位、含n個1、n個0的二進位制數,滿

數論 模板

Saving Beans 題目連結 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<vector> #

程式設計師數學--Catalan number)

10個高矮不同的人,排成兩排,每排必須是從矮到高排列,而且第二排比對應的第一排的人高,問有多少種排列方式? 我們可以先把這10個人從低到高排列,然後,選擇5個人排在第一排,那麼剩下的5個人肯定是在第二排。用0表示對應的人在第一排,用1表示對應的人在第二排,那麼含有5個0

在多種問題下的應用 組合數學-Catalan

4)排隊順序問題1】長度為2n的Dyck words有多少種?(Dyck words是由n個X和n個Y組成的字串,其有一個特點:從左往右,對X和Y分別計數,Y的個數始終不大於X的個數。)轉化思路:可以把X看作入棧,Y看作出棧,Y的個數始終不大於X的個數這一性質正好和空棧無法再出棧相一致,所以Dyck word

Catalan Number

關於擴充套件的卡特蘭數:1.(n-m+1)/(n+1)*c(n+m,n) 2.c[n+m][n]-c[n+m][m-1]Catalan,Eugene,Charles,卡特蘭(1814~1894)比利時數學家,生於布魯日(Brugge),早年在巴黎綜合工科學校就讀。1856