母函數問題【轉】

來源:互聯網
上載者:User

標籤:style   color   使用   sp   問題   on   c   ad   r   

產生函數是說,構造這麼一個多項式函數g(x),使得x的n次方係數為f(n)。 如:序列{0,1,2,3,4,5...n}的產生函數為:$f(x)=0+x+2x^2+3x^3+4x^4+...+nx^n$
產生函數最絕妙的是,某些產生函數可以化簡為一個很簡單的函數。也就是說,不一定每個產生函數都是用一長串多項式來表示的。比如,這個函數f(n)=1 (n當然是屬於自然數的),它的產生函數就應該是$g(x)=1+x+x^2+x^3+x^4+\ldots$(每一項都是一,即使n=0時也有$x^0$係數為1,所以有常數項)。再仔細一看,這就是一個有無窮多項的等比數列求和嘛。如果-1<x<1,那麼g(x)就等於1/(1-x)了。在研究產生函數時,我們都假設級數收斂,因為產生函數的x沒有實際意義,我們可以任意取值。於是,我們就說,f(n)=1的產生函數是g(x)=1/(1-x)。

 

我們舉一個例子說明,一些具有實際意義的組合問題也可以用像這樣簡單的一個函數全部表示出來。
考慮這個問題:從只有4個MM的二班選n個MM出來有多少種選法。學過簡單的排列與組合的同學都知道,答案就是C(4,n)。也就是說。從n=0開始,問題的答案分別是1,4,6,4,1,0,0,0,...(從4個MM中選出4個以上的人來方案數當然為0嘍)。那麼它的產生函數g(x)就應該是$g(x)=1+4x+6x^2+4x^3+x^4$。這不就是……二項式展開嗎?於是,$g(x)=(1+x)^4$。

你或許應該知道,$(1+x)^k=C(k,0)x^0+C(k,1)x^1+\ldots+C(k,k)x^k$;但你或許不知道,即使k為負數和小數的時候,也有類似的結論:$(1+x)^k=C(k,0)x^0+C(k,1)x^1+...+C(k,k)x^k+C(k,k+1)x^(k+1)+C(k,k+2)x^(k+2)+\ldots$(一直加到無窮)。其中,廣義的組合數C(k,i)就等於k(k-1)(k-2)…(k-i+1)/i!,比如C(4,6)=4*3*2*1*0*(-1)/6!=0,再比如C(-1.4,2)=(-1.4)*(-2.4)/2!=1.68。後面這個就叫做牛頓二項式定理。當k為整數時,所有i>k時的C(k,i)中分子都要“越過”0這一項,因此後面C(k,k+1),C(k,k+2)之類的都為0了,與我們的經典二項式定理結論相同;不同的是,牛頓二項式定理中的指數k可以是任意實數。

 

我們再舉一個例子說明一些更複雜的產生函數。n=x1+x2+x3+...+xk有多少個非負整數解?這道題是學排列與組合的經典例題了。把每組解的每個數都加1,就變成n+k=x1+x2+x3+...+xk的正整數解的個數了。

教材上或許會出現這麼一個難聽的名字叫“隔板法”:把n+k個東西排成一排,在n+k-1個空格中插入k-1個“隔板”。答案我們總是知道的,就是C(n+k-1,k-1)。它就等於C(n+k-1,n)。它關於n的產生函數是$g(x)=1/(1-x)^k$。這個產生函數是怎麼來的呢?其實,它就是(1-x)的-k次方。把$(1-x)^{-k}$按照剛才的牛頓二項式展開,我們就得到了$x^n$的係數恰好是C(n+k-1,n),因為$C(-k,n)*(-x)^n=[(-1)^n*C(n+k-1,n)]*[(-1)^n*x^n]=C(n+k-1,n)x^n$。這裡看暈了不要緊,後文有另一種方法可以推匯出一模一樣的公式。事實上,我們有一個純組合數學的更簡單的解釋方法。因為我們剛才的幾何級數$1+x+x^2+x^3+x^4+...=1/(1-x)$,那麼$(1+x+x^2+x^3+x^4+...)^k$就等於$1/(1-x)^k$。仔細想想k個($1+x+x^2+x^3+x^4+\ldots$)相乘是什麼意思。$(1+x+x^2+x^3+x^4+\ldots)^k$的展開式中,n次項的係數就是我們的答案,因為它的這個係數是由原式完全展開後k個指數加起來恰好等於n的項合并起來得到的。

 

現在我們引用《組合數學》上最經典的一個例題:
我們要從蘋果、香蕉、橘子和梨中拿一些水果出來,要求蘋果只能拿偶數個,香蕉的個數要是5的倍數,橘子最多拿4個,梨要麼不拿,要麼只能拿一個。問按這樣的要求拿n個水果的方案數。
結合剛才的k個($1+x+x^2+x^3+x^4+\ldots$)相乘,我們也可以算出這個問題的產生函數。
$g(x)=(1+x^2+x^4+...)(1+x^5+x^10+..)(1+x+x^2+x^3+x^4)(1+x) \\
=[1/(1-x^2)]*[1/(1-x^5)]*[(1-x^5)/(1-x)]*(1+x) (前兩個分別是公比為2和5的幾何級數)\\
=1/(1-x)^2 \\
=(1-x)^{-2}=C(1,0)+C(2,1)x+C(3,2)x^2+C(4,3)x^3+\ldots (參見剛才對1/(1-x)^k的展開)\\
=1+2x+3x^2+4x^3+5x^4+....$

 於是,拿n個水果有n+1種方法。我們利用產生函數,完全使用代數手段得到了答案!

我們用兩種方法得到了這樣一個公式:$1/(1-x)^n=1+C(n,1)x^1+C(n+1,2)x^2+C(n+2,3)x^3+...+C(n+k-1,k)x^k+\ldots$。這個公式非常有用,是把一個產生函數還原為數列的武器。而且還是核武器。

接下來我們要示範如何使用產生函數求出Fibonacci數列的通項公式。
Fibonacci數列是這樣一個遞推數列:f(n)=f(n-1)+f(n-2)。現在我們需要求出它的產生函數g(x)。
$g(x)=x+x^2+2x^3+3x^4+5x^5+8x^6+13x^7\ldots$
等式兩邊同時乘以x,我們得到:
$x*g(x)=x^2+x^3+2x^4+3x^5+5x^6+8x^7+\ldots$
就像我們前面說過的一樣,這相當於等式右邊的所有係數向右移動了一位。
現在我們兩式相加,我們得到:
$g(x)+x*g(x)=x+2x^2+3x^3+5x^4+8x^5+\ldots$
把這最後一個式子和第一個式子好好對比一下。如果第一個式子的係數往左邊移動一位,然後把多餘的“1”去掉,就變成了最後一個式子了。由於遞推函數的性質,我們神奇地得到了:g(x)+x*g(x)=g(x)/x-1。也就是說,$g(x)*x^2+g(x)*x-g(x)=-x$。把左邊的g(x)提出來,我們有:$g(x)(x^2+x-1)=-x$。於是,我們得到了$g(x)=x/(1-x-x^2)$。

現在把$x/(1-x-x^2)$還原成通項公式。這不是我們剛才的$1/(1-x)^n$的形式,我們要把它變成這種形式。

我們發現,$1-x-x^2=[1-(1-\sqrt{5})x/2]*[1-(1+\sqrt{5})x/2]$,$(1-\sqrt{5})/2$和$(1+\sqrt{5})/2$是$x^2-x-1=0$的兩個根。

那麼令$x/(1-x-x^2) = \frac{c_1}{1-(1-\sqrt{5})x/2}+\frac{c_2}{1-(1+\sqrt{5})x/2}$

$=\frac{c_1*[1-(1+√5)x/2]+c_2*[1-(1-√5)x/2]}{[1-(1-\sqrt{5})x/2] * [1-(1+\sqrt{5})x/2]}$

$=\frac{c_1*[1-(1+√5)x/2]+c_2*[1-(1-√5)x/2]}{1-x-x^2}$

也就是說,$c_1*[1-(1+√5)x/2]+c_2*[1-(1-√5)x/2]=x$。

代入x=0,得$c_1+c_2=0$;代入x=1,得$\frac{1-\sqrt{5}}{2}c_1+\frac{1+\sqrt{5}}{2}c_2=1$。可以求得$c_1=-1/\sqrt{5},c_2=1/\sqrt{5}$。

所以$x/(1-x-x^2) = \frac{-1/\sqrt{5}}{1-(1-\sqrt{5})x/2}+\frac{1/\sqrt{5}}{1-(1+\sqrt{5})x/2}$

母函數問題【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.