首页 > 其他分享 >【笔记】生成函数 · 进阶(EGF)

【笔记】生成函数 · 进阶(EGF)

时间:2024-07-22 22:31:01浏览次数:15  
标签:平移 进阶 omega sum 笔记 生成 hat EGF

写在前面

本文除了例题 @.1 P4389 付公主的背包 使用 OGF 其她的均为 EGF

0 约定

0.1 一些形象的表达

  1. 收缩: 指一个式子由比较复杂的形式变简单。本文中大概率就是指一个生成函数用封闭形式来表达;
  2. 多项式的平移: 对于任意一个多项式 \(A(x)\),向左平移 \(m\) 位指 \(\left(A(x)-\sum\limits_{i=0}^{m-1}a_ix^i\right)/x^m\);向右平移 \(m\) 位指 \(A(x)\times x^m\)​;

0.2 记号

  1. 如果没有特别说明,大写字母一般表示其小写字母的生成函数的封闭形式。

1 封闭形式的生成

  1. 由递推式生成: 将等式两边同时乘上形式元 \(z^n\) 并对 \(n\ge 0\) 求和。然后分开收缩之后再求和;
  2. 由数列生成: 将原数列的生成函数 \(F(x)\) 向右平移 \(1\) 位,然后求 \(xF(x)-F(x)\),从而列出方程求解;
  3. 由多个生成函数运算生成:
    1. 复合: 直接带入就行;
    2. 两个生成函数以卷积形式相乘,就等价于她们的封闭形式相乘。
    3. 其她的,按运算法则算就好;

由一个封闭形式推另一个封闭形式的时候,系数中的 \(n\) 一定要转移到 \(z\) 的指数上去(大概率是求导。


2 指数生成函数 EGF

我们称满足如下形式的形式幂级数为 指数生成函数 (Exponential Generating Function, EGF)

\[\hat A(z)=\sum_{n\ge0}a_n\dfrac {z^n}{n!} \]

特别地,我们会用 \(\left[\frac {z^n}{n!}\right]\) 来直接提取 \(a_n\),而若用 \([z^n]\) 的话提取到的是 \(\frac {a_n}{n!}\) 。

也就是说 \(\left[\frac {z^n}{n!}\right]\) 和 \(n![z^n]\)​ 是等价的。

值得注意的是,EGF 的原生数列(系数数列),指的是用 \([z^n]\) 提取的值,是包含 \(n!\) 的。


2.1 运算法则

  1. \(z^m\hat A(z)\) 在 OGF 的语境下为平移;而在 EGF 下,由于 \(n!\) 并不会改变,所以并不是直接平移,最终的数列应该是 \(\{a_{n-m}\cdot \frac {n!}{(n-m)!} \}\)。

  2. \(\hat A^\prime(z)\) 在 OGF 的语境下为带系数的移位,生成 \(\{(n+1)a_{n+1} \}\);而在 EGF 中,就是真正的向左平移(一位)了,而 \(\int_{0}^{z} \hat{A}(t) \mathrm{d} t\) 也就是向右平移了。

  3. $\hat{C}(z)=\hat{A}(z) \hat{B}(z) $$ 在 OGF 语境下为普通卷积,在 EGF 语境下为二项卷积,也即:

    \[c_{n}=\sum_{k}\binom{n}{k} a_{k} b_{n-k} \]


@ 例题

@.1 P4389 付公主的背包

用 dp 递推式生成封闭形式,再快速求解

定义 \(f_{i,j}\) 前 \(i\) 个物品,凑出容量为 \(j\) 的方案数。

有递推式:

\[f_{i,j}=\sum_{t\in\mathbb N}f_{i-1,j-v_it} \]

然后用 1.1 的手法,配一个形式元上去:

\[f_{i,j}z_j=\sum_{t\in\mathbb N}f_{i-1,j-v_it}z^{j-v_it}\cdot\sum_{t\in\mathbb N}z^{v_it} \]

进而:

\[F_i(z)=F_{i-1}(z)\cdot \dfrac 1 {1-z^{v_i}};F_0=1 \]

后续的“计算”和生成函数本身无关。


@.2 贝尔数

将 \(\{1,2,3,\dots,n\}\) 划分为若干个非空子集的方案数 \(\omega_n\) 称为 贝尔数

考虑 \(1\) 所在的子集,写出如下转移式:

\[\omega_n=\sum_{i=0}^{n-1}{n-1\choose i}\omega_{n-i-1} \]

这实际上是划分集合的惯用 trick,即考虑一个特定元素最终所在集合。

继续用 1.1 的手法尝试:

\[\sum_{n\ge0}\omega_nz^{n-1}=\sum_{n\ge0}\omega_{n-i-1}z^{n-i-1}\cdot \sum_{i=0}^{n-1}{n-1\choose i}z^i \]

发现 \({n-1\choose i}z^i\) 不能直接收拢欸。

注意到我们现在能继续的变形,只能把组合数拆成阶乘:

\[\sum_{n\ge0}\omega_n\dfrac {z^{n-1}}{(n-1)!}=\sum_{n\ge0}\omega_{n-i-1}\dfrac{z^{n-i-1}}{(n-i-1)!}\cdot \sum_{i=0}^{n-1}i!\dfrac{z^i}{i!} \]

然后我们惊奇的发现,这三坨求和其实就是 EGF。

……


@.3 「CF908G」New Year and Original Order

标签:平移,进阶,omega,sum,笔记,生成,hat,EGF
From: https://www.cnblogs.com/CloudWings/p/18317127

相关文章

  • C++学习笔记
    -------------------------------------------------------------------给一个无单向不循环链表的首结点l,编写程序反转链表,并返回反转后的链表首结点structllist_node{intval;structllist_node*next;};structllist_node*func(structllist_node*l){......
  • Java基础-学习笔记06
    **06访问修饰符封装继承多态**访问修饰符public公开级别,对外公开protected受保护级别,对子类和同一个包中的类公开default默认级别,无修饰符,向同一个包的类公开private私有级别,只有类本身可以访问,不对外公开修饰符可以用来修饰类中的属性,成员方法以及类只有默认......
  • Pandas 和numpy 入门详细笔记
    1.安装和导入1.1安装pipinstallpandaspipinstallnumpy1.2导入importpandasaspdimportnumpyasnp2.数据结构2.1Series(系列)定义:一维标签化数组,可以保存任何数据类型(整数、浮点数、字符串等)。创建Series:#从列表创建s=pd.Series([10,20,30,40]......
  • MPLS-EVPN笔记详述
    目录EVPN简介:EVPN路由:基本四种EVPN路由扩展:EVPN工作流程:1.启动阶段:2.流量转发:路由次序整理:总结:EVPN基本术语:EVPN表项:EVPN支持的多种服务模式:简介:1.PortBased:简介:配置实现:2.VLANBased:简介:配置实现:3.VLANBundle:简介:配置实现:VLAN-AwareBundle:简介:M......
  • OI-Wiki 学习笔记
    算法基础\(\text{Update:2024-07-22}\)复杂度定义衡量一个算法的快慢,一定要考虑数据规模的大小。一般来说,数据规模越大,算法的用时就越长。而在算法竞赛中,我们衡量一个算法的效率时,最重要的不是看它在某个数据规模下的用时,而是看它的用时随数据规模而增长的趋势,即时间复......
  • 高速收发器:PHY层笔记(一)
    笔记:高速收发器的数据位宽通常有:2,4,8字节等;PCIE喜欢的位宽是1DW=4Byte;这里对高速收发器的设计为4Byte也就是32位宽;GT中PHY层的字对齐和掩码处理高速收发器的数据流以SOT开始(和MIPI一样),GT的SOT一般就是K码,标志了开始,其也具有EOT,标志了结束;但与MIPI有很大的不同,GT的K码可......
  • ##笔记day06-C语言基础:随机数、一维、二维数组、字符数组
    day07笔记1)rand生成随机数1)rand()随机函数头文件:#include<stdlib.h>函数原型:intrand(void);函数功能:生成大于等于0的随机整数参数:void返回值:生成的随机整数2)srand更新随机数种子(srand()函数用于给rand()函数设定种子)头文件:......
  • EXCEL初级入门--(第四章 函数进阶学习)-中
    文章目录(十四)MatchVlookup应用对比Match(十五)IndexMatch多条件应用案例Index(十六)IndexMatch数组嵌套IndexMatch(十七)唯一Subtotal唯一的筛选函数Subtotal(十八)Sumproduct函数应用Sumproduct(十九)条件求和函数1、sum2、sumif3、sumifs(二十)条件计......
  • HTML笔记总结(Xmind格式):第一天
    Xmind鸟瞰图:简单文字总结:笔记总结:1.常用开发工具:VScode,Hbuilder,IDEA2.常见浏览器:IE,火狐(Firefox),谷歌(chrome),Safari3.Web标准:结构标准,表现标准,行为标准4.HTML的全称为超文本标记语言5.排版标签有:标题标签,段落标签,水平线标签,换行标签,div标签,span标签6.标题标签的特点: ......
  • JavaScript笔记总结(Xmind格式):第一天
    Xmind鸟瞰图:简单文字总结:js使用方法:        1.行内样式(需要特定条件才可以使用)        2.内部样式(script尽量写在body最下面)        3.外部样式(在script标签中通过src引入外部的js文件)window对象的方法(window可以省略):        1.alert......