神奇的catalan數(卡塔蘭/卡特蘭)

問題一:一個合法的表達式由()包圍,()可以嵌套和連接,如(())()也是合法 表達式;現在有 6 對(),可以組成的合法表達式的個數是多少?

問題二:在圖書館一共6個人在排隊,3個還《面試寶典》一書,3個在借《面試寶典》一書,圖書館此時沒有了面試寶典了,求他們排隊的總數?

問題三:一個棧(無窮大)的進棧序列爲1,2,3,..n,有多少個不同的出棧序列?

這幾個都是筆試題,考察的就是catalan數,那麼Catalan數是什麼呢,看一下wikipedia就知道了:

卡塔蘭數是組合數學中一個常在各種計數問題中出現的數列。以比利時的數學家歐仁·查理·卡塔蘭(1814–1894)命名。歷史上,清代數學家明安圖(1692年-1763年)在其《割圜密率捷法》最早用到“卡塔蘭數”,遠遠早於卡塔蘭[1][2][3]。有中國學者建議將此數命名爲“明安圖數”或“明安圖-卡塔蘭數”[4]。

表達式:

一般項表達式:(https://img-blog.csdn.net/20150329215506712) 遞推關係:h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ...+ h(n-1)h(1) (其中n>=2) n的catalan數爲:h(n)=C(2n,n)/(n+1),C(2n,n)表示2n的n個數的組合。 又有h(n) = C(2n, n) - C(2n, n-1);

證明:

以問題一爲例,我們把'('當成1,')'當成0,這樣就轉換成了一個01串,要求爲 對於任一位置,其前面的1的個數不得少於0的個數 。這樣我們就可以把所有的組合數-不符合的組合數,就得到結果了。 那不符合的情況是什麼樣的呢:從左向右掃描,必然會在某一奇數位是0(因爲前面偶數個0和1是符合要求的),然後把這個0以後的所有0換成1,1換成0,當01總數爲2n時,此時有(n+1)個1,(n-1)個0.那麼,當存在上述情況時,就反證了此時存在一個不符合的情況,於是,不符合的組合數爲C(2n, n-1)!所以得出: **h(n) = C(2n, n) - C(2n, n-1)**

結論:不想看上邊亂七八糟的,直接看結論,那就是:***h(n) = C(2n, n) - C(2n, n-1)***,C(2n,n)表示2n的n個數的組合。

第一次寫博客,有不對的地方,歡迎指正。

發佈了24 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章