1. 程式人生 > >NOIP 衝刺:常見的遞推之卡特蘭數

NOIP 衝刺:常見的遞推之卡特蘭數

例題:
在一個凸n邊形中,通過不相交於n邊形內部的對角線,把n邊形拆分成若干三角形,問有多少種拆分方案。

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

原理
令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(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2
h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5
另類遞推式 :
h(n)=h(n-1)*(4*n-2)/(n+1);
遞推關係的解為:
h(n)=C(2n,n)/(n+1) (n=0,1,2,…)
遞推關係的另類解為:
h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,…)

分析
如果純粹從f(4)=2,f(5)=5,f(6)=14,……,f(n)=n慢慢去歸納,恐怕很難找到問題的遞推式,我們必須從一般情況出發去找規律。
因為凸多邊形的任意一條邊必定屬於某一個三角形,所以我們以某一條邊為基準,以這條邊的兩個頂點為起點P1和終點Pn(P即Point),將該凸多邊形的頂點依序標記為P1、P2、……、Pn,再在該凸多邊形中找任意一個不屬於這兩個點的頂點Pk(2<=k<=n-1),來構成一個三角形,用這個三角形把一個凸多邊形劃分成兩個凸多邊形,其中一個凸多邊形,是由P1,P2,……,Pk構成的凸k邊形(頂點數即是邊數),另一個凸多邊形,是由Pk,Pk+1,……,Pn構成的凸n-k+1邊形。
此時,我們若把Pk視為確定一點,那麼根據乘法原理,f(n)的問題就等價於——凸k多邊形的劃分方案數乘以凸n-k+1多邊形的劃分方案數,即選擇Pk這個頂點的f(n)=f(k)×f(n-k+1)。而k可以選2到n-1,所以再根據加法原理,將k取不同值的劃分方案相加,得到的總方案數為:f(n)=f(2)f(n-2+1)+f(3)f(n-3+1)+……+f(n-1)f(2)。看到此處,再看看卡特蘭數的遞推式,答案不言而喻,即為f(n)=h(n-2) (n=2,3,4,……)。
最後,令f(2)=1,f(3)=1。

此處f(2)=1和f(3)=1的具體緣由須參考詳盡的“卡特蘭數”,也許可從凸四邊形f(4)=f(2)f(3)+ f(3)f(2)=2×f(2)f(3)倒推,四邊形的劃分方案不用規律推導都可以知道是2,那麼2×f(2)f(3)=2,則f(2)f(3)=1,又f(2)和f(3)若存在的話一定是整數,則f(2)=1,f(3)=1。(因為我沒研究過卡特蘭數的由來,此處僅作劉摶羽的臆測)
未完成。。。。。。