1. 程式人生 > >n對括號的匹配方式(卡特蘭數)

n對括號的匹配方式(卡特蘭數)

4對括號有多少種可能的合法匹配方式?n對括號呢?


此題是卡特蘭數的一個通常應用,相似的還有出棧順序等。關於卡特蘭數的具體內容,請參閱百度百科或Wiki.

http://baike.baidu.com/view/2499752.htm

 

網路上可以搜到很多相關的題目和解答,但是鮮有易懂的推導過程。這裡記錄一種推導過程如下:

 

結論:對於n對括號,合法的排列共有C(n,2n) - C(n+1,2n)種.
分析:
1.考慮n對括號,共有n個 ( 和n個)。
對於其全排列,可以看做是2n個空,將n個 ( 放入其中任意n個空中, 剩餘的位置由 ) 填充,顯然其全排列的個數為
 C(n,2n)

2.在全排列中,包含一部分非法的排列,我們從中減去非法的排列個數,即可得到合法的排列數目。問題規模被縮小。考慮所有排列中,非法排列的個數。
3.先來觀察非法排列的特性,我們假設(為1,)為-1,對於任意一個非法排列a1,a2 ... an ,比存在一個k,使得
           a1+a2+a3..ak<0
   因為如果這個和小於0,說明到k位置-1出現的次數比1多,即右括號出現的次數比左括號多,即該組合是非法的。
4. 對於一個非法排列,必存在一個k,使得a1+a2+a3..ak<0,給出一個n=3時具體的排列:
           1, -1, 1, -1,-1, 1
   在k=5時,出現了非法情況。
   我們將1~5元素翻轉,即1和-1置換,那麼該序列就變成了
           -1, 1, -1, 1, 1, 1
   這個翻轉的序列中,有n+1個1,n-1個-1

   我們再觀察這個翻轉後的序列,對於有n+1個1,n-1個-1的排列,共有C(n+1,2n)種。而對於這種非法的排列:
 總是存在一個最小的k,我們只需要從第1個到第k個元素翻轉回去,就能變成對於有n個1,n個-1的情況下的非法排列。同樣,每一個n個1,n個-1的情況下的非法排列也會對應一個n+1個1,n-1個-1的排列。
 
   例如:
        1, 1, 1, 1, -1, -1 --->從k=1翻轉 -1,1,1,1,-1,-1 
        -1, 1, 1, 1, 1, -1 --->從k=2翻轉 1,-1,-1,1,1,-1

(這裡不是很容易理解,需要自己畫圖分析)

5.所以可以推得,非法排列的個數為C(n+1,2n),
6.最終可得結論:對於n對括號,合法的排列共有C(n,2n) - C(n+1,2n)種.