当前位置: 首页 > news >正文

生成函数入门

生成函数其实并非和 FFT 等内容强相关?我猜的。

普通生成函数(OGF)

假设我们有一个下标从0开始的序列 \(\{a_i\}\) ,那我们就定义它的生成函数为 \(F(x)=\sum_i a_ix^i\)。我们其实从来不关心 \(x\) 的具体值,也基本不会真正带入一个 \(x\) 求值。这只是一个工具,用来转化问题的。

例如,\(\{7,2,3\}\) 的生成函数就是 \(F(x)=7+2x+3x^2\)

\(\{a_i\}\) 当然也可以是一个无穷序列。比如 \(\{0,1,2,3,\cdots\}\) 的生成函数就是 \(F(x)=\sum_{i=0}^\infty ix^i\)

这种无穷项的多项式一般可以叫做形式幂级数。其实只是取了一个高级的名字,加法减法乘法都和普通有限项多项式是一样的。

\[F(x)-G(x)=\sum_i (f_i-g_i)x^i\\ F(x)G(x)=\sum_ix^i\sum_{j=0}^i f_jg_{i-j} \]

OGF 化为封闭形式

写无限项求和实在是太困难了。我们可能希望更简洁地表示一个 OGF。

相信大家都了解过 \(1+\frac12+\frac14+\frac18+\cdots\) 的推导吧。

有一种方式大概是是设这个求和结果为 \(S\),然后我们会发现 \(2S=2+1+\frac12+\frac14+\cdots\),居然和原来的式子有这么多一样的!于是我们两式相减。

\[S=2S-S=2+1-1+\frac 12-\frac 12+\frac 14-\frac 14+\cdots=2 \]

OGF的推导也用到了同样的思想。

比如说 \(F(x)=\sum_{i=0}^\infty x^i\),它是一个全 \(1\) 序列的OGF。

几乎和上面那个问题一样地,我们发现 \(xF(x)=\sum_{i=1}^\infty x^i\) 和原本的 \(F(x)\) 只差了一个 \(1\)

于是我们有 \(xF(x)+1=F(x)\)。从而我们解出 \(F(x)=\frac1{1-x}\)。这样我们就将一个无穷项的式子变成了一个封闭的式子。

但是我们前文提到,我们其实并不会真的将 \(x\) 代入,我们关心的只是 \(x\) 的每一项系数。这个封闭形式帮助我们的方式其实是,有了封闭形式之后我们可以直接计算两个生成函数的和、差、积、etc。

我现在突然想要计算 \(G(x)=\sum_{i=0}^\infty (i+1)x^i\) 的封闭形式。

我们可以像上面一样推导,\(G(x)-xG(x)=F(x)\),从而 \(G(x)=\frac1{1-x}F(x)=\frac1{(1-x)^2}\)

但是我们也可以注意到 \(\sum_{j=0}^i 1\times 1=i+1\),从而 \(G(x)=F(x)^2=\frac1{(1-x)^2}\)

这启示我们,如果一个函数你很难瞪出来他的封闭形式,你可以瞪出来另外一个的生成函数的封闭形式辅助推导。

以及,上面这个 \(F(x)\) 其实是等比数列 \(a_i=p^i\)\(p=1\) 时的特例。\(H(x)=\sum_{i=0}^\infty (px)^i=\frac1{1-px}\) 也都是成立的。

小练习

在 OI-wiki 上搬的(试试看!

  1. \(F(x)=\sum_{i=1}^\infty x^i\)

    答案

    和上面的例子几乎一模一样吧?可以理解为减掉了一个 \(1\),或是乘上了一个 \(x\)。当然重推的话过程也跟上面差不多。

    \[F(x)=1-\frac1{1-x}=\frac x{1-x} \]

  2. \(F(x)=\sum_{i=0}^\infty[i\bmod 2=0]x^i\)

    答案

    只有偶数位上才有值,那我只需要乘上 \(x^2\) 就又可以消了!

    \[x^2F(x)+1=F(x)\\ (1-x^2)F(x)=1\\ F(x)=\frac1{1-x^2} \]

  3. \(F(x)=\sum_{i=0}^n \binom{n}{i}x^i\),其中 \(n\) 是一个给定的正整数。

    答案

    这不是我们二项式定理吗,配一下就变成

    \[F(x)=\sum_{i=0}^n \binom{n}{i}x^i\cdot1^{n-i}\\ F(x)=(x+1)^n \]

  4. \(F(x)=\sum_{i=0}^\infty \binom{n+i}{i}x^i\),其中 \(n\) 是一个给定的正整数。

    提示:如果您没有学习过广义二项式定理,可能只能瞪出答案然后数学归纳证明。

    答案

    广义二项式定理

    然后我们发现这就是负二项式定理的模板。

    \[F(x)=\sum_{i=0}^\infty \binom{(n+1)+i-1}{i} 1^{-(n+1)-i}x^{i}\\ F(x)=(1-x)^{-n-1}=\frac{1}{(1-x)^{n+1}} \]

  5. \(F(x)=\sum_{i=0}^\infty f_ix_i\)\(f_i=\begin{cases}1& i=0,1\\f_{i-1}+f_{i-2}& \text{otherwise.}\end{cases}\),即斐波那契数列的生成函数。

    答案

    发现 \(xF(x)=\sum_{i=1}^\infty f_{i-1}x_i\),则

    \[xF(x)+F(x)=1+\sum_{i=1}^\infty (f_i+f_{i-1})x^i\\ xF(x)+F(x)=1+\sum_{i=1}^\infty f_{i+1}x^i\\ x^2F(x)+xF(x)=x+\sum_{i=2}^\infty f_ix^i\\ x^2F(x)+xF(x)=\sum_{i=0}^\infty f_ix^i-1\\ (x^2+x-1)F(x)=-1\\ F(x)=\frac{1}{1-x-x^2} \]

    前往oiwiki发现算的不太一样,原理是我的第零项为 \(1\),而oiwiki是第零项为 \(0\)。我的斐波那契数列右移一位就是他的。而右移等价于 \(\times x\),所以并不矛盾。

OGF 封闭形式展开

常用的展开工具主要就是广义二项式定理和上面的那个等比数列 \(\sum_{i=0}^\infty (px)^i=\frac1{1-px}\)

比如前文算出来的 \(G(x)=\frac1{(1-x)^2}\),我们发现

\[G(x)=(1-x)^{-2}=\sum_{i=0}^\infty \binom{i+1}{i}x^i=\sum_{i=0}^\infty(i+1)x^i \]

然后就展开了。

比如说刚刚练习里的一个函数 \(F(x)=\frac{1}{1-x^2}\),无法用广义二项式定理展开,但是我们发现!

\[\begin{aligned} F(x)&=\frac12\cdot\frac{1-x+1+x}{(1-x)(1+x)}\\ &=\frac12\cdot(\frac{1}{1-x}+\frac{1}{1+x})\\ &=\frac12\cdot(\sum_{i=0}^\infty x^i+\sum_{i=0}^\infty (-x)^i)\\ \end{aligned} \]

然后我们发现,和原来的式子是相符的。

部分分式分解

其实我们刚刚就是利用的部分分式分解。它的原理是把一个高次项分母的分式搞成一堆 \(\frac{1}{1-ax}\) 相加,这样就可以做了。

比如,现在让我们来推斐波那契数列通项公式吧!为了统一口径我们还是用 oiwiki 的生成函数。

首先我们知道 \(F(x)=\frac x{1-x-x^2}\),那我们就要把它变成两个分式相加。为了做到这一点,我们先要对分母进行因式分解。

\[(1-ax)(1-bx)=1-(a+b)x+abx^2=1-x-x^2\\ \Rightarrow \begin{cases} 1=1\\ a+b=1\\ ab=-1 \end{cases}\\ \Rightarrow \begin{cases} a+b=1\\ ab=-1 \end{cases}\\ a-\frac1a=1\\ a^2-a-1=0\\ a=\frac{1\pm\sqrt5}{2} \]

注意到带入 \(a\) 的一个根后,\(b\) 等于另外一个根,所以我们不妨 \(a=\frac{1+\sqrt5}{2},b=\frac{1-\sqrt5}{2}\)

你当然可以像 oiwiki 一样再解一个方程。但是在项数变多时就又会很麻烦。这里我们介绍一种很神秘的做法作为参考。

参考资料

省流:对于如下的方程

\[\frac{F(x)}{\prod_i(1+p_ix)}=\sum_i \frac{C_i}{1+p_ix} \]

如果不存在相同的 \(p\) 那我们就有

\[C_i=\frac{F(-\frac1{p_i})}{\prod_{j\neq i}(1-\frac{p_j}{p_i})} \]

说白了就是把使得 \(1+p_ix\) 等于 \(0\) 的那个 \(x\) 带入左边乘上 \(1+p_ix\) 后的式子。

证明很简单。两边同时乘上 \((1+p_ix)\) 后右边的 \(\sum\) 就只剩第 \(i\) 项了,别的全变成 \(0\) 了。

这简直和我们的目的一模一样!让我们试试看:

\[\frac{x}{(1-ax)(1-bx)}=\frac{A}{1-ax}+\frac{B}{1-bx}\\ A=\frac{\frac1a}{1-\frac ba}=\frac{1}{a-b}=\frac{1}{\sqrt5}\\ B=\frac{\frac1b}{1-\frac ab}=\frac{1}{b-a}=-\frac{1}{\sqrt5} \]

秒了,和 oiwiki 算的是一样的。遇到次数更高的时候就更能明白这个的强大。

于是我们可以展开。

\[F(x)=\sum_{i=0}^\infty x^i\frac{1}{\sqrt5}\left(\left(\frac{1+\sqrt5}2\right)^i-\left(\frac{1-\sqrt5}2\right)^i\right) \]

http://www.gsyq.cn/news/27450.html

相关文章:

  • ubuntu24.04 server 版本安装xfce 使用web novnc 远程桌面
  • 第一个 AI 应用
  • 调用ack集群 api 接口删除Terminating状态的资源
  • 软件工程课程第二次团队作业
  • TabControl控件
  • VS2026 使用 WebDeploy 发布到 IIS - Jeff
  • 2025 激光灯厂家最新推荐榜:全方位测评核心实力与潜力,甄选优质供应商实用指南
  • SpringBoot3 集成Junit4 - 实践
  • 详细介绍:Spark Shuffle:分布式计算的数据重分布艺术
  • 2025 年火焰检测器生产厂家最新推荐权威排名:涵盖防爆 / 一体化 / 紫外线 / 离子 / 红外线 / 红紫外复合 / 智能型,多维度解析助力企业精准选型
  • FPGA控制RGMII接口PHY芯片基础
  • 2025 年气泵厂家最新推荐权威榜单:小型 / 微型 / 耐腐蚀 / 微型真空 / 微型隔膜 / 防爆气泵公司选购指南
  • 冰川之国破例:冰岛首次发现蚊子,气候变化敲响警钟
  • 2025 年度茶叶行业优质厂家权威榜单:最新推荐全解析,小青柑 / 普洱等好茶选品指南
  • 卸载 macOS 上所有版本的 Python
  • win11暂停更新
  • 视频汇聚平台EasyCVR级联播放偶发失败排查:TCP主动模式下的3秒超时响应差
  • 企业微信ipad协议,标准化接口服务解决方案
  • 2025年DevOps平台全景观察:本土化与全球化双轨并行下的企业选择
  • 信息熵的特征选择算法MATLAB实现
  • 数字商品服务助力开发者降本增效,加速数字商品商业变现
  • 系统建设
  • Navicat Premium 17 官方版下载安装教程|支持MySQL、PostgreSQL、MongoDB等数据库
  • Gitee:数字化转型浪潮中的项目管理利器
  • 2025 水泥墩源头厂家最新推荐排行榜:光伏 / 围挡 / 交通 / 防撞水泥墩多品类优选,实力品牌权威榜单
  • 迷宫问题
  • 2025年10月上海装修公司口碑榜:十强对比评测
  • 2025年10月中国婚姻家事与财富管理律师推荐榜:五强对比评测
  • 2025年包装机厂家权威推荐榜单:全自动包装机/包装生产线/非标定制机器与生产线专业选购指南
  • 2025年10月仓储管理系统推荐:鸿链云仓领衔五大方案对比评测榜