多项式学习笔记(四): 多项式计数基础

1.多项式基础

约定: \(F[n] 或 [x^n]F(x)\) 表示为多项式 \(F(x)\)\(n\) 项的系数。

(1)多项式卷积

\(F(x) * G(x) = \displaystyle\sum_{i=1}^{n}\sum_{j=1}^{n} F[i]G[j]x^{i+j}\)

同理 \((F*G)[n] = \displaystyle\sum_{i=1}^{n} F[i]G[n-i]\)

(2)多项式复合

\(F(G[x]) = \displaystyle\sum_{i=1}^{n} F[i]G(x)^i\)

可以理解为整体替换的形式。

\(F(G(x)) = x\) 时,则称 \(F,G\) 互为复合逆。

(3)泰勒展开

\(F^{(n)}(x)\) 表示 \(F(x)\)\(n\) 阶导数,则有 \(F(x)\)\(x_0\) 处的泰勒展开为 :

\(F(x) = \displaystyle\sum_{i=0} {F^{(i)}(x_0)\over i!} (x-x_0)^i\)

(4) 麦克劳林级数

\(F(x)\)\(0\) 处的泰勒展开,则有 \(F(x) = \displaystyle\sum_{i=0} {F^{(i)}(0)\over i!} x^i\) 这是一个幂级数的形式。

根据这个式子,我们用卷积来定义一些东西。

一个经典的例子就是 \(e^x = \displaystyle\sum_{i=0}{x^i\over i!}\)

(5) 牛顿二项式定理

下文中 \(\dbinom{n}{k} = {n(n-1)(n-2)...(n-k)\over k!}\)

\((x+y)^n = \displaystyle\sum_{i=0}^{n} \dbinom{n}{i}x^iy^{n-i}\)

\(n\) 为正数的时候 \((x+y)^{n} = \displaystyle\sum_{i=0}^{n} C_{n}^{i} x^iy^{n-i}\)

\(x\) 为负数的时候 \((1+x)^n = \displaystyle\sum_{i=0}^{n} C_{n-i+1}^{i} x^i\)

2.生成函数的引入

对于一个无穷数列 \(F\),定义其生成函数为:

\(\displaystyle\sum_{i=0} F[i] x^i = F[0]x^0 + F[1]x^1 + F[2]x^2 ....\)

形式化来说就是:数列的每个数分别附上代数对象 \(x\) 的幂,从而得到了一个幂级数 (你也可以暂且理解为多项式)

比如数列 \(F=<1,1,1,1....1>\) ,他的生成函数为 \(\displaystyle\sum_{i=0}x^i = 1 + x^1+x^2+x^3....\)

作为生成函数 \(F(x)\)\(x\) 的取值我们是不关心的,我们只关心的是 \(F[n]\) 的值,同理函数的值也是没有意义的。

我们观察一下上面的 \(F(x)\) ,不难发现:

\(F[x] = 1+x^1+x^2+x^3+x^4+x^5+....\)

\(xF[x] = x^1+x^2+x^3+x^4+x^5+...\)

两式相减可得: \((1-x)F(x) = 1\)

可以得到 \(F(x) = {1\over 1-x}\)

我们称 \(1\over 1-x\)\(F(x)\) 的封闭形式。

形式化来说就是:对于无穷数列的求和我们不能很好的表示出来。相对简洁的形式就叫做封闭形式。

同理,我们还可以得到以下封闭形式:

  • \(1+x+x^2+x^3 +... = {1\over 1-x}\)
  • \(1+ax+ax^2+ax^3+ax^4+... = {1\over 1-ax}\)
  • \(\displaystyle\sum_{i=0} x^{ik} = {1\over 1-x^k}\)
  • \(\displaystyle\sum_{i=0} cx^{ik} = {1\over 1-cx^k}\)

例题: bzoj3028 食物

我们把每种食物的生成函数写出来,相乘即为选取食物方案数的生成函数 \(F(x)\)

汉堡: \(1+x^2+x^4+x^6+...\) , 封闭形式为 \({1\over 1-x^2}\)

可乐: \(1+x\)

鸡腿: \(1+x+x^2\)

蜜桃多: \(x+x^3+x^5+...\), 封闭形式为 \(x\over 1-x^2\)

鸡块: \(1+x^4+x^8+... = {1\over 1-x^4}\)

包子: \(1+x^1+x^2+x^3 = {1-x^4\over 1-x}\)

土豆片炒肉: \(1+x\)

面包: \(1+x^3+x^6+... . = {1\over 1-x^3}\)

相乘起来可得: \(F[x] = {x\over (1-x)^4}\), 根据牛顿二项式定理展开可得: \(F(x) = x\displaystyle\sum_{i=0}C_{i+3}^i x^i = x\sum_{i=0}c_{i+3}^3 x^i\)

所以取 \(n\) 个食物的方案数为 \(F[n] = C_{i+2}^{3}\) ,利用卢卡斯定理求组合数即可。

3.一些生成函数的推导

主要是利用生成函数来解决一些递推问题。

斐波那契数列的生成函数

递推定义式: \(F[0] = 0,F[1] = 1. F[i] = F[i-1] + F[i-2] (i>1)\)

把他写成生成函数的形式: \(F(x) = \displaystyle\sum_{i=0} F[i]x^i\), 不能看出什么东西来。

考虑利用适当的错位让 $F(x) $ 表示他自己:

\(F(x) = F[0] + F[1]x^1+F[2] x^2+F[3]x^3....\)

\(xF(x) = F[0]x^1+F[1]x^2+F[2]x^3.... = \displaystyle\sum_{i=1}F[i-1]x^i\)

\(x^2F(x) = F[0]x^2+F[1]x^3+F[2]x^4... = \displaystyle\sum_{i=2}F[i-2]x^i\)

\(xF(x)+x^2F(x) = \displaystyle\sum_{i=1}F[i-1]x^i+\sum_{i=2}F[i-2]x^i\)

\(xF(x)+x^2F(x) = F[0] + \displaystyle\sum_{i=2}F[i]x^i\)

由此可得: \(xF(x)+x^2F(x) = F(x)-x\)

解得: \(F(x) = {x\over 1-x-x^2}\)

这个虽然是个封闭形式,但是并不能给我们关于 \(F[n]\) 的信息, 我们现在想办法把他转化为无穷级数的形式。

考虑解一个待定系数方程: \({A\over 1-ax} + {B\over 1-bx} = {x\over 1-x-x^2}\)

展开可得: \({{A-Abx} + {B - Bax}\over (1-ax)(1-bx)} = {x\over 1-x-x^2}\)

可得: \(\begin{cases} A+B = 0\\Ab-Ba = 0\\ab = -1\\a+b = 1\end{cases}\)

解得:\(\begin{cases} A={1\over \sqrt{5}}\\B = {-{1\over {\sqrt5}}}\\a = {(1+\sqrt{5})\over 2}\\b = {1-\sqrt{5}\over 2}\end{cases}\)

然后我们就可以得到斐波那契数列的通项公式: \(F(x) = \displaystyle\sum_{n=0} x^n{1\over \sqrt{5}} \left(\left({(1+\sqrt{5})\over 2}\right)^n - \left({{1-\sqrt{5}}\over 2}\right)^n \right)\)

4.普通生成函数和指数生成函数

OGF(普通生成函数)

设数列 \(F[n]\), 其 \(OGF\)\(F(x) = \displaystyle\sum_{i=0}F[i]x^i\)

考虑两个序列 \(a,b\) 的普通生成函数,分别为 \(F(x),G(x)\),则有:

\(F(x)+G(x) = \displaystyle\sum_{i} (a_i+b_i)x^i\)

所以 \(F(x)+G(x)\) 是序列 \(<a_n+b_n>\)\(\text{OGF}\)

乘法运算(卷积)则有:

\(F(x)G(x) = \displaystyle\sum_{i} x^i\sum_{j=0}^{i}a_ib_{i-j}\)

所以 \(F(x)G(x)\) 是序列 \(<\displaystyle\sum_{i=0}^{n}a_ib_{n-i}>\)\(\text{OGF}\)

例题: [CEOI2004] Sweets

John 得到了 \(n\) 罐糖果。不同的糖果罐,糖果的种类不同(即同一个糖果罐里的糖果种类是相同的,不同的糖果罐里的糖果的种类是不同的)。第 \(i\) 个糖果罐里有 \(m_{i}\) 个糖果。John 决定吃掉一些糖果,他想吃掉至少 \(a\) 个糖果,但不超过 \(b\) 个。问题是 John 无法确定吃多少个糖果和每种糖果各吃几个。有多少种方法可以做这件事呢?

生成函数入门题。

首先我们把每个糖果的生成函数写出来即: \(f(x) = x^0+x^1+x^2 ..... + x^m\).

\(\because xf(x) = x^1+x^2+....x^{m+1}\)

\(\therefore f(x)-xf(x) = 1-x^{m+1}\)

\(\therefore f(x) = {1-x^{m+1}\over{1-x}}\)

把每个糖果的生成函数乘起来: \(\displaystyle{\prod_{i=0}^{n} (1-x^{m_i+1})}\over(1-x)^n\)

分子展开之后最多有 \(2^n\) ,暴力展开即可。

分母由牛顿二项式定理可得: \((1-x)^{-n} = \displaystyle\sum_{k=0}^{\infty}C_{n+k-1}^{k}x^k\)

考虑假如说当前分子枚举到 \(x^{k}\) ,那么分母对当前答案的贡献即为 \(\displaystyle\sum_{i=a-k}^{b-k} C_{n+i-1}^{i}\) .

由 杨辉三角可得, \(\displaystyle\sum_{i=a-k}^{b-k} C_{n+i-1}^{i} = C_{n+b-k}^{b-k} - C_{n+a-k-1}^{a-k-1}\)

可以模数不是质数,没有逆元怎么办?

\(\displaystyle \because C_{n+b-k}^{b-k} = {(n+b-k)!\over{n!(b-k)!}}\)

\(\displaystyle \therefore C_{n+b-k}^{b-k} = {(n+b-k)(n+b-k-1)....(b-k+1)\over n!}\)

因为 $n! $ 很小,所以可以在算分子的时候把模数变为 \(n!\times p\) ,最后在除以 \(n!\) 即可。

EGF 指数生成函数

序列 \(a\) 的指数生成函数 \(\text{EGF}\) 定义为:

\(F(x) = \displaystyle\sum_{i=0}a_i{x^i\over i!}\)

指数生成函数的加法和普通生成函数是一样的。

乘法运算(卷积):

\(F(x)G(x) = \displaystyle\sum_{i=0}^{\infty} a_i{x^i\over i!} \sum_{j=0}^{\infty}b_j{x^j\over j!}\)

\(F(x)G(x) = \displaystyle\sum_{i=0}^{\infty}x^i\sum_{j=0}^{i} a_jb_{i-j}{1\over j!(i-j)!}\)

\(F(x)G(x) = \displaystyle\sum_{i=0}^{\infty}{x^i\over i!}\sum_{j=0}^{i}a_jb_{i-j}{i!\over j!(i-j)!}\)

\(F(x)G(x) = \displaystyle\sum_{i=0}^{\infty}{x^i\over i!} \sum_{j=i}^{n}{i\choose j}a_jb_{i-j}\)

所以 \(F(x)G(x)\)\(<\displaystyle\sum_{i=0}^{n}{n\choose i}a_ib_{n-i}>\)\(\text{EGF}\)

常见的封闭形式:

  • \(\{1,1,1,1,.....\} \Rightarrow e^x\)
  • \(\{1,-1,1,-1,1,....\}\Rightarrow e^{-x}\)
  • \(\{1,c,c^2,c^3.....\} \Rightarrow e^{cx}\)
  • \(\{1,0,1,0,1,0.....\} \Rightarrow {e^x+e^{-x}\over 2}\)

exp 的组合意义

我们观察 \(\text{exp} F(x) = \displaystyle\sum_{i} {F(x)^i\over i!}\)

如果把 \(F(x)\) 看做单个元素的 \(\text{EGF}\), 那么 \(\text{exp} F(x)\) 就描述了这些元素组成的有标号的集合。

举几个例子:

  • 如果 \(n\) 个点带标号的生成树的 \(\text{EGF}\)\(F(x)\), 那么 \(n\) 个点带标号的森林的 \(\text{EGF}\) 即为 \(\text{exp} F(x)\) ,直观理解为将 \(n\) 个点分为若干个集合,每一个集合构成一棵树的方案数之积。
  • 如果 \(n\) 个点带标号的无向连通图的 \(\text{EGF}\)\(F(x)\), 那么 \(n\) 个点带标号的无向图的 \(\text{EGF}\) 即为 \(\text{exp} F(x)\) 。直观理解为把 \(n\) 个点分为若干个集合,每一个集合构成无向连通图的方案数之积。
posted @ 2021-02-20 11:33  genshy  阅读(501)  评论(0编辑  收藏  举报