基本概念
介紹
學卡特蘭數我覺得可能比組合數要難一點,因爲組合數可以很明確的告訴你那個公式是在幹什麼,而卡特蘭數卻像是在用大量例子來解釋什麼時卡特蘭數
這裏,我對卡特蘭數做一點自己的理解
卡特蘭數是一個在組合數學裏經常出現的一個數列,它並沒有一個具體的意義,卻是一個十分常見的數學規律
對卡特蘭數的初步理解:有一些操作,這些操作有着一定的限制,如一種操作數不能超過另外一種操作數,或者兩種操作不能有交集等,這些操作的合法操作順序的數量
爲了區分組合數,這裏用表示卡特蘭數的第項
從零開始,卡特蘭數的前幾項爲
定義
遞歸定義
,其中
遞推關係
通項公式
經化簡後可得
只要我們在解決問題時得到了上面的一個關係,那麼你就已經解決了這個問題,因爲他們都是卡特蘭數列
實際問題
先用一個最經典的問題來幫助理解卡特蘭數
去掉了所有的掩飾,將問題直接寫出來就是
例題1
在一個的網格上,你最開始在上,你每個單位時間可以向上走一格,或者向右走一格,在任意一個時刻,你往右走的次數都不能少於往上走的次數,問走到有多少種不同的合法路徑。
合法路徑個數爲
直接求不好,考慮求有多少種不合法路徑
路徑總數爲在次移動中選次向上移動,即
畫一下圖,我們把這條線畫出來,發現所有的合法路徑都是不能碰到這條線的,碰到即說明是一條不合法路徑
先隨便畫一條碰到這條線的不合法路徑,所有的不合法路徑都會與這條線有至少一個交點,我們把第一個交點設爲
如圖
我們把之後的路徑全部按照這條線對稱過去
這樣,最後的終點就會變成
由於所有的不合法路徑一定會與有這麼一個交點
我們可以得出,所有不合法路徑對稱後都唯一對應着一條到的路徑
且所有到的一條路徑都唯一對應着一條不合法路徑(只需將其對稱回去即可)
所以不合法路徑總數是
那麼合法的路徑總數爲
這是一個非常好用且重要的一個方法,其它的問題也可以用該方法解決
即找到不合法路徑唯一對應的到另一個點的路徑
如網格計數
方法
先將方法寫在前面吧
相信大家都聽過燒開水這個數學小故事吧
和學習數學一樣,轉化是基本思路,將一個問題轉化爲另外一個已經解決了的問題是最重要的
01序列
你現在有個和個,問有多少個長度爲的序列,使得序列的任意一個前綴中的個數都大於等於的個數
例如時
有兩種合法序列
而都是不合法的序列
合法的序列個數爲
我們把出現一個看做向右走一格,出現一個看做向上走一格,那麼這個問題就和上面的例題一模一樣了
拓展
如果是個個呢?
不過是最後的終點變爲了罷了
如果是的個數不能夠比少呢
我們只需將這條線上下移動即可
括號匹配
你有個左括號,個右括號,問有多少個長度爲的括號序列使得所有的括號都是合法的
合法的序列個數爲
要使所有的括號合法,實際上就是在每一個前綴中左括號的數量都不少於右括號的數量
將左括號看做,右括號看做,這題又和上面那題一模一樣了
進出棧問題
有一個棧,我們有次操作,次進棧,次出棧,問有多少中合法的進出棧序列
合法的序列個數爲
要使序列合法,在任何一個前綴中進棧次數都不能少於出棧次數
後面就不用我說了吧,和上面的問題又是一模一樣的了
312排列
一個長度爲的排列,只要滿足且就稱這個排列爲排列
求的全排列中不是排列的排列個數
答案也是卡特蘭數
我們考慮排列有什麼樣的特徵
如果考慮一個排列能否被排列用進棧出棧來表示
那麼排列就是所有不能被表示出來的排列
那麼這個問題就被轉化成進出棧問題了
不相交弦問題
在一個圓周上分佈着 個點,兩兩配對,並在這兩個點之間連一條弦,要求所得的條弦彼此不相交的配對方案數
當時,一種合法的配對方案爲如圖
合法的序列個數爲
這個問題沒有上面的問題那麼顯然,我們規定一個點爲初始點,然後規定一個方向爲正方向
如規定最上面那個點爲初始點,逆時針方向爲正方向
然後我們把一個匹配第一次遇到的點(稱爲起點)旁邊寫一個左括號,一個匹配第二次遇到的點(稱爲終點)旁邊寫一個右括號
如圖
看出來嗎,在規定了這樣的一個順序後,在任意一個前綴中起點的個數都不能少於終點的個數
於是這又是一個卡特蘭數列了
二叉樹的構成問題
有個點,問用這個點最終能構成多少二叉樹
答案仍然是卡特蘭數列
這個問題不是用上面的方法,是用遞歸定義的卡特蘭數
一個二叉樹分爲根節點,左子樹,右子樹
其中左子樹和右子樹也是二叉樹,左右子樹節點個數加起來等於
設個點能構成個二叉樹
我們枚舉左子樹有幾個點可得
這個和卡特蘭數列的遞歸定義是一模一樣的
凸多邊形的三角劃分
一個凸的邊形,用直線連接他的兩個頂點使之分成多個三角形,每條直線不能相交,問一共有多少種劃分方案
答案還是卡特蘭數列
我們在凸多邊形中隨便挑兩個頂點連一條邊,這個凸多邊形就會被分成兩個小凸多邊形,由於每條直線不能相交,接下來我們就只要求這兩個小凸多邊形的劃分方案然後乘起來即可
和二叉樹的構成問題一樣,我們枚舉大凸多邊形被分成的兩個小凸多邊形的大小即可
階梯的矩形劃分
一個階梯可以被若干個矩形拼出來
圖示是兩種劃分方式
像下圖是不合法的劃分方式
問,一個階矩形有多少種矩形劃分
答案仍然是卡特蘭數列
我們考慮階梯的每個角
如圖
每個角一定是屬於不同的矩形的,我們考慮和左下角屬於一個矩形的是哪個角
這個矩形將這個梯形又分成兩個小梯形,如圖
於是我們又可以寫出遞推式了
和卡特蘭數列的遞歸式是一樣的
卡特蘭數就講這麼多吧
如有哪裏講得不是很明白或是有錯誤,歡迎指正
如您喜歡的話不妨點個贊收藏一下吧