1. 程式人生 > >組合數學——特殊計數序列(Part 2)

組合數學——特殊計數序列(Part 2)

格路徑與Schroder數

參考資料:《組合數學》- Richard A.Brualdi

一.格路徑

首先我們將格路徑的概念形式化。
考慮只有整點的平面上的兩個點(r,s),(p,q),並且有pr,qs。然後我們再來考慮從(r,s)到達(p,q)的路徑。每一步是水平步(horizontal step)H(橫座標+1,縱座標不變)或者是垂直步(vertical step)V(橫座標不變,縱座標+1)。那麼就可以用水平線和垂直線講兩個點連線起來。同時這樣一條路徑可以由一個含有H,V的數列表示出來。(感覺就是簡單的組合計數呢…)

1.定理&例子

(1).

定理內容:從(r,s)到(p,q)的矩陣格路徑的數目為:Cpr+qspr=Cpr+qsqs
證明非常簡單。就是考慮有H,V組成的那個序列,就有p-r+q-s個位置,填入p-r個H,填入q-s個V,那就是簡單的組合計數而已…
現在我們來看這個問題的變種。我們在問題上加上一個限制:考慮從(0,0)到(p,q)的矩形格路徑,我們限制路徑在座標平面的直線y=x的下方或上方。
現在假設是上方,再假設H=1,V=-1,那麼就有sum[k]>=0恆成立,根據之前Part1講Catalan數的部落格可知,這就是一個Catalan數的經典模型。那麼路徑數就是C[p+q]了。那麼只要p==q,我們就可以利用Catalan數的各種公式很快速地求出所有的路徑數了。(這也算一個定理了吧,但是由於主要和和Catalan有關,就不單獨寫出來了)

(2).

可見之前的結論並不是萬能的。現在假設是在下方,並且有p>=q,那麼有:

Ans=pq+1p+1C(p+q,q)
為了得到這個結論,我們通過之前的推導Catalan數的方法來推導這道題。
那麼我們就模仿之前的定義。定義B為轉過對角線的格路徑集合,那麼用|tot|-|B|就是答案。然後|B|其實等於從(0,-1)到(p,q-1)的所有觸及對角線或者是穿過對角線格路徑的數量(其實就是向下平移了一格)。且路徑是一一對應的。現在考慮其中的一條路徑(從(0,-1)開始的)L。這條路徑的第一個觸碰到y=x的點為(d,d),那麼設從(0,-1)到(d,d)的點為L1,剩餘的路徑是L2,那麼把L1和L2連線起來就是L了。
現在我們再來對映一下。將L1沿著y=x進行翻轉,得到L1’。那麼我們可以發現,將一條從(-1,0)到(p,q-1)的一條路徑是必然經過y=x的,然後我們將這樣一條路徑中的從(-1,0)到(d,d)的點翻折,得到的是一條從(0,-1)到達(p,q-1)且觸碰到y=x的一條路徑。這就意味著這樣的一條路徑與L是一一對應的,也與B集合中的一條路徑一一對應。也就是說|B|等於從(-1,0)到(p,q-1)的格路徑的數目。這樣子再來套用定理1,就有:
|B|=Cp+1+q1q1=Cp+qq1

因此就可以計算答案了:
Ans=|tot||B|=Cp+qpCp+qq1
=(p+q)!q!p!(p+q)!(q1)!(p+1)!=pq+1p+1Cp+qp(可以自己隨便化簡一下啦)
得證。
(3).

好像到現在才看見格路徑的定義呢…加入一種新的步叫做對角步(diagonal step)(橫縱座標都加一)。並且定義K(p,q:rD)為從(0,0)到(p,q)使用了r個對角步D的路徑的數目(又叫HVD格路徑)。那麼其實K(p,q:0D)就是之前我們一直在提的問題啦。
顯然r>min(p,q)的話,K(p,q,rD)=0。
那麼就有r<=min(p,q),則有:
K(p,q:rD)=(p+qr)!(pr)!(qr)!r!
那麼就有:
K(p,q)=r=0min(p,q)(p+qr)!(pr)!(qr)!r!
這其實就是一個有重複的排列的推理而已。除去r個對角步D之後,就有p-r個H,有q-r個V,就是含有r個D,有p-r個H,有q-r個V的可重複排列了。建議自己推一下,比較簡單,這裡就不詳細證明了。

(4).

定義R(p,q)為從(0,0)到(p,q)的在對角線下方(下對角線HVD格路徑)的HVD格路徑的數目。R(p,q:rD)為從(0,0)到(p,q)的正好使用了r個對角步D的下對角線HDV格路徑數目。
設p和q為正整數,且p>=q,且0<=r<=q,那麼有:
R(p,q)=pq+1pr+1(p+