趣談生成函數 =v=

趣談生成函數 =v=

今天luyouqi在洛谷隨機跳題rand出來一道生成函數板子題,而後我給作了(霧函數

發現小夥伴們還不會生成函數,因而我試着寫這篇生成函數簡介。(其實我也不怎麼會生成函數這麼高級的東西,本篇純屬道聽途說,你們看着當故事娛樂一下就好)工具

食用指南

  • 筆和草算紙是推薦的食用工具

從前有一個無限長的隨便一個數列\(a = \{2, 1, 4, 7, 4\}\),有一天,一個大佬說:能不能用一個函數表示這個數列呢?因而大佬把\(a\)的每一項當作一個多項式的係數,獲得了多項式函數\(f(x) = 2 + x + 4x^2 + 7x^3 + 4x^4\),用來表示上面那個序列。大佬很開心。spa

大佬的朋友——蒟蒻感到疑惑:這個函數代入一個\(x\),獲得的東西有什麼意義啊?blog

大佬思考了一會,說:也沒什麼意義。get

蒟蒻說:那你研究它有個*兒用?數學

大佬又思考了一會,找到了它的一種用途。假如數列\(a\)表明一類物品,中\(a_i\)表示這類物品中選\(i\)件物品的方案數——例如\(a = \{1, 1, 1\}\)表示A類物品中能夠選0件或1件或2件,但不能選大於2件;又例如無限長數列\(b = \{1, 0, 0, 1, 0, 0, 1, 0, 0, 1...\}\)表示B類物品只能選3的倍數件。這時候,把\(f(x) = 1 + x + x^2\)\(g(x) = 1 + x^3 + x^6 + x^9 ...\)乘起來,獲得另外一個函數\(h(x) = 1 + x + x^2 + x^3 + x^4 + ...\)。這個函數有什麼意義呢?它的第\(i\)項的係數就是選A、B兩種物品共\(i\)件的方案數。class

蒟蒻說:這有啥,不就是把兩個多項式乘起來麼?和\(O(n^2)\)一個個枚舉有什麼區別?技巧

大佬說:嗯……你能夠FFT……方法

蒟蒻:哦。沒有這個函數我也知道能夠FFT。di

大佬不認爲這個「用函數表示數列」的東西很沒用,他決定繼續研究,還給它取了個名字叫作數列的「生成函數」,表示用這個函數能生成(表示)一個數列。

有一天,大佬告訴蒟蒻他發現了一個規律——\(a = \{1, 1, 1, 1, 1...\}\)的生成函數是\(f(x) = \frac{1}{1 - x}\)

蒟蒻說:老哥,您不會是研究數學研究傻了吧?它的生成函數不是\(1 + x + x^2 + x^3...\)嘛?怎麼會等於您這個\(\frac{1}{1 - x}\)呢?

大佬說:對啊!\(1 + x + x^2 + x^3...\)就等於\(\frac{1}{1 - x}\)

蒟蒻:喂,大連市第七人民醫院嘛?

大佬:……在\(x\in (-1, 1)\)的時候。

蒟蒻:你不早說!等等,爲何\(x\in (-1, 1)\)時就相等了?

大佬:等比數列求和公式啊,\(1 + x + x^2 + x^3...\)的前\(n\)項和等於\(\frac{1 - x^n}{1 - x}\),這是個無限長的數列,\(n\)趨近於無窮的時候\(x^n\)趨近於0,這不就相等了嘛!

蒟蒻:啊,對啊!但是好好的一個函數,你憑空給限定了定義域,這仍是原來那個函數嘛?

大佬:不是你說的生成函數中的\(x\)沒有意義嘛!還有,你看\(1 + x^2 + x^4 + x^6...\)這個函數,它是否是等於\(\frac{1}{1-x^2}\)

蒟蒻:對,把前一個式子中的\(x\)換成\(x^2\)不就行了嘛!但是\(1 + 2x + 3x^2 + 4x^3...\)這個函數,它等於什麼?

大佬:等於\(\frac{1}{(1 - x)^2}\)啊!你看,對等式\(\frac{1}{1 - x} = 1 + x + x^2 + x^3...\)兩邊分別求導,獲得……算了,說了你也不懂,那你把兩個\(1 + x + x^2 + x^3...\)乘起來不就行了嘛!

蒟蒻:蛤?我看看……的確誒!

大佬:我還知道\(1 + 3x + 6x^2 + 10x^3 + 15x^4...\)的生成函數是多少呢!是\(\frac{1}{(1-x)^3}\)!推廣開來,\(\frac{1}{(1 - x)^k}\)生成的數列是\(\sum_i^\infty C_{i + k - 1}^{k - 1} x^i\)

蒟蒻:爲何啊?

大佬:你看\(\frac{1}{(1 - x)^k}\)就是\(k\)\(\frac{1}{1 - x}\)相乘,就是\(k\)\(1 + x + x^2 + x^3...\)相乘嘛。那麼它的第\(i\)項係數就是從\(k\)\(1 + x + x^2 + x^3...\)中每一個選出一項,乘起來恰爲\(x^i\)的方案數,就是\(i = x_1 + x_2 + ... + x_k\)的非負整數解的組數,你用組合數學中的所謂「隔板法」求一下,是否是\(C_{i + k - 1}^{k - 1}\)

蒟蒻:有道理!

大佬:瞭解了\(\frac{1}{1-x^k}\)\(\frac{1}{(1-x)^k}\)這兩種特殊生成函數,就掌握了一類題的技巧——來作道題吧!Luogu P2000 歡迎你!


大佬:我還會用生成函數求斐波那契數列通項!

蒟蒻:這麼牛逼?

大佬:首先啊,你看這個斐波那契數列的生成函數\(f(x) = x + x^2 + 2x^3 + 3x^4 + 5x^5 + 8x^6...\),而後把它乘個\(x\),得\(x\cdot f(x) = x^2 + x^3 + 2x^4 + 3x^5 + 5x^6 + 8x^7...\),用前式減去後式,獲得\(f(x) - x \cdot f(x) = x + x ^ 3 + x^4 + 2x^5 + 3x^6 + 5x^7... = x + x^2 \cdot f(x)\),因此\(f(x) = \frac{x}{1 - x - x^2}\)

蒟蒻:但是這不是咱們以前見過的那兩種特殊生成函數,你怎麼把它還原成數列呢?

大佬:我打算把它變成等比數列求和的形式!這個分母\(1-x-x^2\)是能夠因式分解的,分解後就是\((1-\frac{1-\sqrt5}{2}x)(1-\frac{1+\sqrt5}{2}x)\),因此\[\frac{x}{1 - x - x^2} = \frac{x}{(1-\frac{1-\sqrt5}{2}x)(1-\frac{1+\sqrt5}{2}x)}\],看着很是難受,裂項一下,獲得\[ \frac{x}{(1-\frac{1-\sqrt5}{2}x)(1-\frac{1+\sqrt5}{2}x)} = -\frac{1}{\sqrt5}\frac{1}{(1-\frac{1-\sqrt5}{2}x)} + \frac{1}{\sqrt5}\frac{1}{(1-\frac{1+\sqrt5}{2}x)}\]這就成了兩個等比數列求和公式乘個常數再相加的形式了!把兩個等比數列還原成數列,獲得\[fib_n = -\frac{1}{\sqrt5}(\frac{1-\sqrt5}{2})^n + \frac{1}{\sqrt5}(\frac{1+\sqrt5}{2})^n\]這就是斐波那契數列通項公式了!

蒟蒻:哇!這麼神奇!

大佬:聽說這種方法能夠應用到各類線性齊次遞推中哦~

相關文章
相關標籤/搜索