這個文章是基於別的博客來說的,反正根據本身的理解,而後寫出來的。歡迎大佬吐槽。html
卡特蘭序列:1,1,2,5,14,42,132,429,1430... 通項就是post
卡特蘭數:卡特蘭序列中的每一項,爲卡特蘭數, 既:spa
卡特蘭數的引入:3d
在組合數學中有一類問題,爲計數問題,好比正常的排列組合,斐波拉契數列等等均可以用來計數。htm
如今給出一個情景:對於一個n*n的正方形網格,每次咱們都能向右或者向上移動一格,而且,路徑在網格的下三角形的區域內,那麼從(0,0)->(n, n)總的路徑爲多少?blog
這樣的路徑就知足,如圖所示的樣子。get
咱們能夠從中明顯看出,1.向右的步數爲n,向左也爲n。 2.若是設向右的一步爲1,向上一步爲-1,那麼整個路徑就是,a1+a2+a3+.....a2n;只是從中選取n個向右或者向上走,博客
可是,因爲不超過y=x這個線,也就獲得,a1+a2+...ak>=0(k<=2n)數學
而卡特蘭數也就是在計數這樣的路徑有多少條。class
如今,咱們來推導一下這個過程:假設全部到達(n, n)的路徑(無論,超不超過y=x)爲Cn,假設到達(n, n)而且必定會超過y=x這個線爲Dn,
那麼。
如今,把注意力放在求Dn上,首先要明白Dn是能到達(n, n)而且必定超過y=x的路徑。那麼它有三個性質:
1.向右和向上的步數都爲n 2.都存在一個惟一的第k步第一次超過y=x這個直線上。(每條路徑的k必定不一樣,無需證實)
3.第k步必定是向上一格子。並且,必定爲奇數步,由於,k-1步必定恰好在y=x這個直線上。而如圖所示k-1必定爲偶數。
關鍵點:咱們既然已經知道了,Dn中計數的全部路徑的性質,那麼,咱們如今就主觀處理一下,咱們將1-k步的向上和向右的步驟互換(也就是將向右換爲向上,向上換成向右),獲得n+1的向右步,n-1的向上步,則(這裏再次強調一下,咱們是主觀的這樣處理的,至於爲何這樣作,我不能給出一個很是嚴格的數學推理,可是,我能夠給出本身的理解:在一個排列公式中,從2n箇中選取n+1個事物出來,其中一個很是隱藏的條件是這2n個事物‘不一樣’,好比,從10個相同的小球中選取2個小球的方案數,這樣的問題是沒有意義的。由於都是相同的小球,可是,咱們Dn在使用排列公式時怎麼知足這個大前提呢?那是由於每條路徑的k-1的值是不一樣的。)
卡特蘭數的一些性質:
1.
推導過程:
2.
3.
4.
5. ‘~’這是個等價無窮小的符號,而後就知道這個式子能夠表述增加趨勢的表達。
固然,比較關鍵的是在實際問題中的應用了:
下面給出的均不給出嚴格證實:
1.在n個-1和n個+1的2n項 {a(2n)} 知足:a1+a2+a3...ak>=0, 0<=k<=2n 條件的序列的個數等於第n個卡特蘭數Cn;
2.存在n對括號對,而後把它們打亂造成的新序列,該序列知足 括號配對 條件的序列的個數等於第n個的卡特蘭數Cn;
3.n+1個數連乘,在加上合法的括號後,造成不一樣的乘法順序的序列的個數等於第n個卡特蘭數Cn;
(好比;abcd這個式子-> {a(b(cd)), (ab)(cd), ((ab)c)d, (a(bc))d, a((bc)d) } 等於卡特蘭數C3=5 )
4.n個節點的二叉樹的全部可能形態等於第n個卡特蘭數Cn;
5.n個非葉節點的滿二叉樹的形態數等於第n個卡特蘭數Cn;
6.對於有一個n*n的網格,每次只能向上或者向右移動一格,那麼從(0,0)->(n, n),全部的了路徑只在右下三角形區域或者左上三角形區域
的總的路徑條數爲第n個卡特蘭數;
7.凸n+2邊形進行三角形劃分的方案數爲第n個卡特蘭數Cn;
8.n個數字入棧後出棧的序列的個數等於第n個卡特蘭數Cn;
9.對於集合{1,2,...,2n},每次選出一對數字,這樣造成的n個數對,能造成n個區間,這n個區間不相交。知足這樣選擇的方案數等於第n個
卡特蘭數Cn;
這樣纔是不相交:
10.n層的階梯切割成n個矩陣的切法數等於第n個卡特蘭數Cn;
11.在一個2*n的格子中填入1到2n這些值使得每一個格子內的數都比右邊和上面的全部數都小的全部狀況數等於第n個卡特蘭數Cn;
12.平面上連接能夠造成的凸包的2n個點分紅2個一條線,造成n條線,並知足兩兩不相交的總狀況數等於第n個卡特蘭數Cn;
卡特蘭數的一個拓展:
標準的卡特蘭數都是存在n個向上,n個向右,可是,若是不一樣怎麼辦呢?
咱們推廣到通常形式:有n個向上,m個向右,那麼邊界就由原來的y=x,變成了y=(n/m)x這一條直線了,
那麼最後同理推導出來的公式就是:
參考博客:http://daybreakcx.is-programmer.com/posts/17315.html
但願能對您有幫助。