組合數學及其應用——遞推關系和生成函數


  將計數結果或者某個特殊數列的信息,呈現在一個函數關系式中,我們稱之為生成函數,如這個名字,我們本質上討論的是一個函數解析式,但是這個解析式以一個無窮級數的形式蘊藏着某個計數數列。

                           

 

  目前來看對於給出的這個“生成函數”的新定義,我們似乎看不到有什么很好的用處,但是隨着問題的深入,它的作用便會呈現出來,例如在求解Catalan數的非齊次遞推關系的時候就用到了生成函數的概念。

 

  例子1:

   

  在一些問題中,我們借助生成函數的概念,通過其他的運算定理,將一個∑形式的生成函數轉化成其他的形式然后進行函數層次上的操作,能夠使得我們處理問題站在一個新的視角。

 

  例子2:

   

 

  例子3:

  什么樣的數列的生成函數是如下式子?

   

 

  例子4:確定蘋果、香蕉、橘子和梨的n組合個數,其中每個n組合蘋果的個數是偶數,香蕉的個數是奇數,橘子的個數是0到4之間,而且至少有一個梨.

   

  例子5:

  求裝有蘋果、香蕉、橘子和梨的果籃的可能數h(n),其中每個果籃中蘋果數是偶數,香蕉數是5的倍數,橘子樹最多有4個,而梨的個數是0或1.

   

 

                             

   這種形式雖然給出了線性遞推關系,但是各項系數不全為常數,下面我們引入一種求解線性常系數遞推關系的通解求法。

  

 

  這一定理的作用在於:能夠將需要O(n)時間復雜度求解的的數列,在O(logn)得到。

 

  Ex2:

  一串由a、b、c組成的通信文字的長度為n,要求通信文字中不能夠有連續兩個a出現,那么請問共有多少種情況?

 

 

  呼應其一開始我們給出的結論:求解遞推關系為了更快的計算序列中的某項h[n],對比1、2兩個例題我們發現,如果就編程計算而言,Ex1用這種方法是很好的,因為最終的形式比較的簡單不含根號。而Ex2的形式如果交給計算機計算,就顯得有些丑陋。例如斐波那契數列,利用該定理求得的解也帶有根號,此時為了簡化求得數列中某一項的時間復雜度,我們就要去尋求其他的方法(例如矩陣快速冪)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM