生成函数GeneratingFunction
极限
∀→对于
∃→存在
极限:∀ϵ,∃N,N>n,|an−A|<ϵ
就是说,对于所有(任意小的非负整数)ϵ存在N,使得an与A的差值小于ϵ
我们就把A叫做此序列的极限limn→∞an=A
有限数列没有极限!
若数列中的值全部相同的也没有极限!
{1,12,13,14,...}的极限是0
{1,0,0,0,0,0,...}的极限是0
导数
To be continued:D
泰勒公式
To be continued:D
生成函数
如何简短的表示一个序列呢?
{1,1,1,1,1,1,1,...}
我们以一多项式来表达,以x的指数为下标,系数为值,就可以得到
A={1∗x0,1∗x1,1∗x2,1∗x3,...}
即
A={1,x,x2,x3,...}
注意,这个序列的长度是无限的
∵A=1+x+x2+x3+...∴x∗A=x+x2+x3+...∴(1−x)A=1∴A=11−x
11−x就是生成这个序列的函数,也就是说,它就是生成函数
类似的,可以得到:
21−x=2,2,2,2,2,2...11+x=1−x+x2−x3...=1,−1,1,−1,...11−2x=1+2x+4x2+8x3...=1,2,4,8,...
当然,生成函数支持加法和乘法(上面已经有例子了)
11+x+11−x=21−x21,1,1,1,...+1,−1,1,−1,...=2,0,2,0,...11−x2=1,0,1,0,...x1−x2=11−x−11−x2=0,1,0,1,...
还有
令A=1+3x+5x2+7x3+...∴xA=1x+3x2+...∴(1−x)A=1+2x+2x2+...∵21−x=2+2x2+...∴2x1−x=2x+2x2+...∴1+2x1−x=1+2x+2x2+...∴(1−x)A=1+2x1−x∴A=1+2x1−x1−x=1+x(1−x)2
令B=1+4x+9x2+16x3+25x5+...∴xB=1x+4x2+9x3+...∴(1−x)B=1+3x+5x2+...∴(1−x)B=A=1+x(1−x)2∴(1−x)B=1+x(1−x)3
如何生成有限数列呢?
∵A=1,x,x2,x3,...∴x4A=x4+x5+x6+...∴(1−x4)A=1+x+x2+x3又∵A=11−x∴(1−x4)×11−x=1−x41−x=1+x+x2+x3
如果对生成函数求导会如何?
(11−x)′=1(1−x)2=1+2x+3x2+4x4+...(11−x)′′=1(1−x)3=1+3x+6x2+10x4+15x5+...
这里旨在于告诉你很多数列均可以用生成函数表示
此外的
F=1+1x+2x2+3x3+5x4+...∴F=11−x−x2对于方程1−x−x2=0解得x1=1+√52,x2=1−√52用配方法倒推得1−x−x2=(1−x1)×(1−x2)设F=11−x−x2=a1−x1+b1−x2...Tobecontinued:D
当然,普通生成函数的用处不止于此
有一些水果,求选苹果偶数个,选梨5的倍数个,橘不超过4个,桃最多一个,求选共n个水果的方案数
这咋办?还好,我们有生成函数!
众所周知,普通生成函数的乘积就是组合数(你又知道?)
我们让i次项系数作为组合数
C=A+B=∞∑n=0(ai+bi)xn→加法原则C=A×B=∞∑n=0n∑i=0(ai∗b(n−i))xncn=n∑i=0(ai∗b(n−i))xn→乘法原则
故得i次项系数即为相加为i的生成函数的所有方案数
苹果的生成函数:1+x2+x4+x6+...=11−x2
梨:1+x5+x10+...=11−x5
橘:1+x+x2+x3+x4=1−x51−x
桃:1+x=1−x21−x
相乘求组合,11−x2×11−x5×1−x51−x×1−x21−x=1(1−x)2
发现恰为1+2x+3x2+4x4+...所以输出n即可
6!
但是,并不是所有题目都如此凑巧,我们还得算(1+x2+x4+x6+...)×(1+x5+x10+...)×...
所以,我们将给出一个模板,旨在于做↑上面的小乘法
c1[0]=1,l1=0;
for (int i = 1; i <= n; i++)
{
l2 = l1 + x[i] * y[i];
memset(c2, 0, sizeof(int) * (l2 + 1));
for (int j = 0; j <= y[i] && j * x[i] <= l2; j++)
for (int k = 0; k <= l1 && j * x[i] + k <= l2; k++)
c2[j * x[i] + k] += c1[k];
memcpy(c1, c2, sizeof(int) * (l2 + 1));
l1 = l2;
}
其实,看到这你也能发现,它可以用背包实现,但与背包相比,生成函数可快多了
普通生成函数只能解决组合问题!!!
指数生成函数
普通生成函数只能解决组合问题!!!
但是指数生成函数可以解决排列问题:D
To be continued:D
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现