生成函数初学
生成函数初学
定义
生成函数:指无穷级数与函数的对应,其中无穷级数表示一个无限的数列的和。
我们定义一个生成函数
同理,与其相反地,我们定义一个生成函数
生成函数的主要应用是求排列组合。
下面以一道例题引入。
有
种物品可供选择,其中第 种物品有 个,现在要从中选取 个物品,求方案数。
我们用
也即:
第
我们将取物品的过程看作对每一种物品分开考虑选取再合起来,那么可以将由上述方式得到的
因为只考虑选取物品的个数,不考虑选取的物品具体是哪一种,所以所有的角标可以去除,即
将表达式展开,不难得出
普通型生成函数
普通型生成函数的一般形式:
令
令
两式相减,得到
考虑在最常见的普通型生成函数做一些变形。
, ; , ;
插入:牛顿二项式定理
对任意实数
一般来说,使用时通常有
拓展一下,可以得出
P2000 拯救世界
将题意中的十条限制用式子表示出来,即
这十个式子都可以用等比数列转化形式,相乘可得
分子部分每一个式子在分母部分都有相同的式子,可以直接约去,最后分母还剩下
所以相当于我们要求
指数型生成函数(泰勒级数)
指数型生成函数的一般形式:
同样令
拓展一下,不难得出
考虑这样一个问题。
给定
个集合,现在要分别从集合 中分别取出 个数。记 ,将选出的 个数构成排列,求方案数。
同样对每一个集合用一个式子表示,但每一个集合中选取的数要求无序。故对于第
也即
同样做乘法,取第
hdu - 2065
A
,C
两个字符只能出现偶数次,生成函数为
B
,D
两个字符可以出现任意数次,生成函数为
乘起来就是
然后计算第
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效