生成函数初学

生成函数初学

定义

生成函数:指无穷级数与函数的对应,其中无穷级数表示一个无限的数列的和。

我们定义一个生成函数 f(x)收敛的,当且仅当 f(x) 随着 x 的定向变化趋向于一个确定的极限值。如令 f(x)=1x,当 x 时,f(x)=1x0,为定值。

同理,与其相反地,我们定义一个生成函数 g(x)发散的,当且仅当 g(x) 随着 x 的定向变化趋向于无穷,即 g(x) 的值没有极限。如 g(x)=2xx 时,g(x)=2x

生成函数的主要应用是求排列组合

下面以一道例题引入。

n 种物品可供选择,其中第 i 种物品有 ci 个,现在要从中选取 k 个物品,求方案数。

我们用 xi 表示第 i 个物品。对于第 i 种物品构造一个式子,形如:

xi0+xi1+xi2++xici

也即:

1+xi+xi2++xici

i 个式子有 ci+1 项,其中式子的第 j 项表示第 i 种物品 xi 取了 j1 个。

我们将取物品的过程看作对每一种物品分开考虑选取再合起来,那么可以将由上述方式得到的 n 个式子相乘,得到

(1+x1++x1c1)(1+x2++x2c2)(1+xn++xncn)

因为只考虑选取物品的个数,不考虑选取的物品具体是哪一种,所以所有的角标可以去除,即

(1+x++xc1)(1+x++xc2)(1+x++xcn)

将表达式展开,不难得出 xk 项前的系数即为答案。

普通型生成函数

普通型生成函数的一般形式:

f(x)=i=0aixi=a0+a1x+a2x2+a3x3++anxn

ai=1,就得到了最常见的普通型生成函数:

f(x)=i=0xi=1+x+x2+x3+

S=f(x),则 xS=x+x2+x3+x4

两式相减,得到 (x1)S=1,故 f(x)=S=1x1=11x

考虑在最常见的普通型生成函数做一些变形。

  • xxf(x)=i=0(1)ixi=11+x
  • x2xf(x)=i=02ixi=112x

插入:牛顿二项式定理

对任意实数 a,b,n,有

(a+b)n=i=0n(ni)aibmi

一般来说,使用时通常有 b=1,那么有

(x+1)n=i=0n(ni)xi

拓展一下,可以得出

1(1x)n=i=0(n+i1i)xi

P2000 拯救世界

将题意中的十条限制用式子表示出来,即

{1+x6+x12+1+x+x2++x91+x+x2++x51+x4+x8+1+x+x2++x71+x2+x4+1+x1+x8+x16+1+x10+x20+1+x+x2+x3

这十个式子都可以用等比数列转化形式,相乘可得

11x6×1x101x×1x61x×11x4×1x81x×11x2×1x21x×11x8×11x10×1x41x

分子部分每一个式子在分母部分都有相同的式子,可以直接约去,最后分母还剩下 (1x)5

所以相当于我们要求 1(1x)5 展开后第 n 项的系数,即 ans=(51n+51)=(4n+4)

指数型生成函数(泰勒级数)

指数型生成函数的一般形式:

f(x)=i=0aixii!=a0+a1x+a2x22!+a3x33!++anxnn!

同样令 ai=1,可以得到最简单的指数型生成函数,记为 ex

ex=i=0xii!=1+x+x22!++xnn!

拓展一下,不难得出

  • ex=1x+x22!x33!+x44!
  • ex+ex2=1+x22!+x44!+x66!+
  • exex2=x+x33!+x55!+

考虑这样一个问题。

给定 n 个集合,现在要分别从集合 1,2,n 中分别取出 ki 个数。记 K=ki,将选出的 K 个数构成排列,求方案数。

同样对每一个集合用一个式子表示,但每一个集合中选取的数要求无序。故对于第 i 个集合,用以下式子表示:

xi00!+xi11!+xi22!++xikiki!

也即

1+xi+xi22!++xikiki!

同样做乘法,取第 K 项的系数,但这只是选数的方案数,还需乘上 K! 得到排列数。

hdu - 2065

AC 两个字符只能出现偶数次,生成函数为 ex+ex2

BD 两个字符可以出现任意数次,生成函数为 ex

乘起来就是

ex×ex×ex+ex2×ex+ex2=e4x+2e2x+14

然后计算第 n 项的系数,为 4n+2×2n4=4n1+2n1

练习

poj - 3734

poj - 1322

poj - 1014


posted @   ereoth  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示