首页 > 其他分享 >【学习笔记】多项式学习笔记4:生成函数

【学习笔记】多项式学习笔记4:生成函数

时间:2023-02-15 18:22:44浏览次数:60  
标签:函数 多项式 sum 笔记 生成 学习 ge dfrac times

参考资料:OI-Wiki、APJ's pdf、学长的课件

生成函数 \(\text{GF(Generating Function)}\)

定义

定义一个数列 \(\{a_n\}\) 的生成函数(或母函数)\(F(x)\) 为:

\[F(x)=\sum_{i\ge 0}a_ix^i \]

这是个无限项的形式幂级数,然而我们实际上只关心有限项。

\(x\) 并没有实际意义,只是占位符。这种情况在最初的多项式卷积中就已经见到过了。

将一般的卷积写成生成函数的好处在于方便进一步推导。

简单数列的生成函数

  • \(\{1,1,1,1,1,\cdots\}\)

\[F(x)=\sum_{i\ge 0} x^i=\dfrac{1}{1-x} \]

  • \(\{0,1,2,4,8,\cdots\}\)

\[F(x)=\sum_{i\ge 0} 2^ix^i=\dfrac{1}{1-2x} \]

  • \(\{1,0,1,0,1,\cdots\}\)

\[F(x)=\sum_{i\ge 0} x^{2i}=\dfrac{1}{1-x^2} \]

  • \(\{0,1,0,1,0,\cdots\}\)

\[F(x)=\sum_{i\ge 0} x^{2i+1}=\dfrac{x}{1-x^2} \]

由于 \(x\) 作为占位符,无穷项求和时是否收敛并不重要,最多只关心 \(x=0\) 时的意义。

斐波那契数列生成函数

对于 \(n\ge 2\),有:

\[f_n=f_{n-1}+f_{n-2} \]

于是可以写成:

\[F(x)=xF(x)+x^2F(x) \]

然而边界值不能确定,只需要补足 \([x^1]F(x)=1\) 即可,于是:

\[F(x)=xF(x)+x^2F(x)+x \]

整理一下变成:

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

设 \(\dfrac{x}{1-x-x^2}=\dfrac{A}{1-ax}+\dfrac{B}{1-bx}\)

根据上面的举例,可以知道左右两个分式都能写成等比的生成函数,于是:

\[[x^n]F(x)=\dfrac{1}{\sqrt{5}}\left[\left(\dfrac{1+\sqrt{5}}{2}\right)^n-\left(\dfrac{1-\sqrt{5}}{2}\right)^n\right] \]

这个就是斐波那契数列的通项公式了。

普通生成函数 \(\text{OGF(Original Generating Function)}\)

用于无标号计数。

形式

\[F(x)=\sum_{i\ge 0} a_ix^i \]

当 \(a_i=k^i\) 时,封闭形式:

\[F(x)=\dfrac{1}{1-kx} \]

一个简单的例子

有红黄蓝三种球各 \(m\) 个,从中共选出 \(n\) 个,求方案数。

构造生成函数 \(G(x)=1+x+x^2+\cdots+x^m\),三种球的选择实际上就是乘积贡献到指数和的位置,也就是卷积,于是可以写成:

\[f_{n}=\sum_{i,j,k}g_i\times g_j\times g_k[i+j+k=n] \]

生成函数的形式就是:

\[F=G*G*G=G^3 \]

范德蒙德卷积

\[\dbinom{n+m}{k}=\sum_{i=0}^k\dbinom{n}{i}\dbinom{m}{k-i} \]

左侧是 \([x^k](1+x)^{n+m}\),右侧是 \([x^i](1+x)^n\times [x^{k-i}](1+x)^m\)

这样一看好像很显然了。

一道题

CodeForces-438E The Child and Binary Tree

设 \(g_i\) 为该权值是否在集合中,\(f_i\) 为权值和为 \(i\) 的方案数,写出转移式子:

\[f_n=\sum_{i=0}^{n} g_i\sum_{j=0}^{n-i} f_{j}\times f_{n-i-j} \]

就是三个函数卷一下,但是重要的地方在于初始值 \(f_0=1\),于是生成函数应该写成:

\[F=F^2G+1 \]

解一下:

\[F=\dfrac{1\pm\sqrt{1-4G}}{2G} \]

分子有理化:

\[F=\dfrac{2}{1\mp \sqrt{1-4G}} \]

\(G=0\) 时加号有意义,因此是:

\[F=\dfrac{2}{1+\sqrt{1-4G}} \]

卡特兰数生成函数

卡特兰数的一个递推式:

\[C_n=\sum_{i=0}^{n-1}C_i\times C_{n-i-1} \]

也就是:

\[C=xC^2+1 \]

解完和上一题差不多,是:

\[C=\dfrac{2}{1+\sqrt{1-4x}} \]

据说再解就出通项了。

指数生成函数 \(\text{EGF(Exponential Generating Funtion)}\)

用于有标号计数。

形式

\[F(x)=\sum_{i\ge 0}\dfrac{a_ix^i}{i!} \]

\(a_i=1\) 的特殊情况:

\[F(x)=\sum_{i\ge 0}\dfrac{x^i}{i!}=e^x \]

因此 \(a_i=k^i\) 时:

\[F(x)=e^{kx} \]

一个简单的例子

还是红黄蓝三种球,只不过这次是要出一个排列。

\[f_n=\sum_{i,j,k} \dbinom{n}{i,j,k}g_i\times g_j\times g_k[i+j+k=n] \]

拆开组合数很神奇的是:

\[\dfrac{f_n}{n!}=\sum_{i,j,k} \dfrac{g_i}{i!}\times \dfrac{g_j}{j!}\times \dfrac{g_k}{k!}[i+j+k=n] \]

长得很像,同样也是:

\[F=G^3 \]

一道题

洛谷-P4841 [集训队作业2013]城市规划

常规容斥做法不多赘述。

设 \(F(x)\) 为无向连通图个数的生成函数,那么 \(F(x)\) 卷多次得到:

\[G(x)=\sum_{i\ge 0}\dfrac{F^i(x)x^i}{i!} \]

除以一个 \(i!\) 是因为连通块没有顺序区别,而 \(F(x)\) 卷积是有顺序区别的。

这个东西长得和封闭形式的 \(k^i\) 很像,也就是:

\[G(x)=\exp F(x) \]

而 \(G(x)=\sum_{i\ge 0} 2^{\tbinom{i}{2}}x^i\) 是已知的,\(\ln G(x)=F(x)\) 回来即可。

多项式 \(\text{exp}\) 与多项式 \(\ln\) 的组合意义

通过上面的题实际上已经得出了,一个整体方案数生成函数的 \(\exp\) 就是任意一个独立整体方案数生成函数(例如上面的连通图与无限制),而 \(\ln\) 的组合意义就是由 \(\exp\) 反向得到的。

标签:函数,多项式,sum,笔记,生成,学习,ge,dfrac,times
From: https://www.cnblogs.com/SoyTony/p/Learning_Notes_about_Polynomial_4.html

相关文章

  • c++学习7 指针与数组
    一二维数组与数组指针的关系二维数组名,代表的是第0行的行地址,“+1”是跳过一个行。而取“*”的话,则是在当前行地址基础上再取列地址,那么如果我们再取一个“*”呢?就会......
  • 第二次学习记录1
    第二次学习记录这个作业属于哪个课程班级链接这个作业要求在哪里作业要求链接这个作业的目标学习总结《计算机导论》这门课程的知识一、个人github主......
  • OpenGL ES 2.0编程指导阅读笔记(七)图元装配和光栅化
    图元装配阶段在顶点着色之后,在图元装配阶段执行裁剪、透视变换和视窗变换。光栅化是将图元转换成一系列两位片元的过程。图元OpenGLES2.0中可以绘制的图元有三角形、......
  • go爬虫学习
    1、使用http库本人使用http库封装了Post请求和Get请求,并且封装成MyHttp库使用,可设置代理和请求头,返回响应包主体Myhttp.gopackageMyHttpimport( "fmt" "io/ioutil......
  • python的学习之路Day4
    2023.2.15Day42023.2.15Day4今日内容概要主题:数据类型(先熟悉)字符串列表字典布尔元组集合与用户交互基本运算符今日内容详细字符串str#用来记录描述性......
  • robot笔记
    robotframework -----自动化测试框架  -----直接写自动化用例关键字驱动思想  -----做任何事情,都是先找关键字,然后调用关键字功能 ---函数测试套......
  • 学习python第三天
    今日内容概要pycharm软件的基本使用python的注释语法变量与常量python的底层优化垃圾回收机制数据类型整型浮点型今日内容详细pycharm软件的基本使用下载......
  • MarkDown学习
    标题三级标题四级标题五级标题六级标题字体Hello,World! *Hello,World! **Hello,World! ***Hello,World! ~~引用Hello,World! >分割线​ ---​ ***图片![名字](......
  • 【笔记】Spherical Harmonic Lighting 球谐光照渲染初探
    SphericalHarmonicLighting球谐光照渲染初探漫反射环境光正常情况下,漫反射计算公式为:\[L(p,w_o)=\int_{\Omega}L(p,w_i)n\cdotw_idw_i\]也就是在半球空间\(\Om......
  • 机器学习基础概念-逻辑回归和线性回归
    逻辑回归和线性回归虽然名字很相似,但是它们是两个不同的模型,适用于不同的任务。主要区别在于以下几个方面:目标变量类型不同:逻辑回归的目标变量是二元分类变量,即只有两个......