说实话这东西至少得学一天……

普通型生成函数 OGF

数列 f ( x ) = a x f(x)=a_x f(x)=ax​的普通型生成函数为 g ( x ) = ∑ i = 0 ∞ a i x i g(x)=\sum_{i=0}^\infty a_ix^i g(x)=∑i=0∞​ai​xi。
一般来说, f ( x ) f(x) f(x)是有特殊性质的。它会得到一些特殊的生成函数。在收敛意义下(假设函数会收敛) x ∈ [ − 1 , 1 ] x\in[-1,1] x∈[−1,1]时,由等比数列计算公式 ∑ i = 0 n − 1 a 0 q i = a 0 ( 1 − q n ) 1 − q \sum_{i=0}^{n-1}a_0q^i=\frac{a_0(1-q^n)}{1-q} ∑i=0n−1​a0​qi=1−qa0​(1−qn)​, 生成函数有以下计算公式:
∑ i = 0 ∞ x i = 1 1 − x \sum_{i=0}^\infty x^i=\frac{1}{1-x} ∑i=0∞​xi=1−x1​,即 f ( x ) = 1 f(x)=1 f(x)=1的生成函数为 g ( x ) = 1 1 − x g(x)=\frac{1}{1-x} g(x)=1−x1​。
∑ i = 0 n C n i x i = ( 1 + x ) n \sum_{i=0}^n C_n^ix^i=(1+x)^n ∑i=0n​Cni​xi=(1+x)n,即 f ( x ) = C n x f(x)=C_n^x f(x)=Cnx​的生成函数。这其实是二项式定理。
∑ i = 0 ∞ C n + i − 1 i x i = 1 ( 1 − x ) n \sum_{i=0}^\infty C_{n+i-1}^ix^i=\frac{1}{(1-x)^n} ∑i=0∞​Cn+i−1i​xi=(1−x)n1​,即 f ( x ) = C n + x − 1 x f(x)=C_{n+x-1}^x f(x)=Cn+x−1x​的生成函数。(广义二项式定理)
∑ i = 0 ∞ ( i + 1 ) x i = 1 ( 1 − x ) 2 \sum_{i=0}^\infty (i+1)x^i=\frac{1}{(1-x)^2} ∑i=0∞​(i+1)xi=(1−x)21​,即 f ( x ) = x + 1 f(x)=x+1 f(x)=x+1的生成函数。这是上式的特殊情况。
在第一个式子中,将 x x x代为其它式子,有:
∑ i = 0 ∞ x k i = 1 1 − x k \sum_{i=0}^\infty x^{ki}=\frac{1}{1-x^k} ∑i=0∞​xki=1−xk1​,即 f ( x ) = [ k ∣ x ] f(x)=[k|x] f(x)=[k∣x]的生成函数。
∑ i = m ∞ x i = x m 1 − x \sum_{i=m}^\infty x^i=\frac{x^m}{1-x} ∑i=m∞​xi=1−xxm​,即 f ( x ) = [ x ≥ m ] f(x)=[x\ge m] f(x)=[x≥m]的生成函数。
∑ i = 0 ∞ a i x i = 1 1 − a x \sum_{i=0}^\infty a^ix^i=\frac{1}{1-ax} ∑i=0∞​aixi=1−ax1​,即 f ( x ) = a x f(x)=a^x f(x)=ax的生成函数。
还有一些显然的式子,如:
∑ i = 0 n x i = 1 − x n + 1 1 − x \sum_{i=0}^n x^i=\frac{1-x^{n+1}}{1-x} ∑i=0n​xi=1−x1−xn+1​,即 f ( x ) = 1 ( x ≤ n ) f(x)=1(x\le n) f(x)=1(x≤n)的生成函数。
将以上形式进行组合,还可以得到多种生成函数。得到生成函数后,从右反推到左得到原函数。
生成函数的意义在于将复杂的组合问题转化为简单的计算问题。普通型生成函数做组合问题,而指数型生成函数做排列问题。

练习题:求选n个水果的方案数。苹果和香蕉有无限个,但苹果必须成对拿,而香蕉必须五个一组地拿;橘子只有4个,梨只有一个。

设 f ( n ) f(n) f(n)表示选 n n n个水果的方案数。将每种水果的生成函数乘起来,有
g ( x ) = ∑ i = 0 ∞ x 2 i ∑ i = 0 ∞ x 5 i ∑ i = 0 4 x i ∑ i = 0 1 x i g(x)=\sum_{i=0}^\infty x^{2i}\sum_{i=0}^\infty x^{5i}\sum_{i=0}^4 x^i\sum_{i=0}^1 x^i g(x)=i=0∑∞​x2ii=0∑∞​x5ii=0∑4​xii=0∑1​xi
= 1 1 − x 2 1 1 − x 5 1 − x 5 1 − x ( 1 + x ) =\frac{1}{1-x^2}\frac{1}{1-x^5}\frac{1-x^5}{1-x}(1+x) =1−x21​1−x51​1−x1−x5​(1+x)
= 1 ( 1 − x ) 2 =\frac{1}{(1-x)^2} =(1−x)21​
由开篇第四个式子,得 f ( x ) = x + 1 f(x)=x+1 f(x)=x+1。

求斐波那契数列通项

斐波那契数列的生成函数为 g ( x ) = x + x 2 + 2 x 3 + 3 x 4 + 5 x 5 + 8 x 6 + . . . g(x)=x+x^2+2x^3+3x^4+5x^5+8x^6+... g(x)=x+x2+2x3+3x4+5x5+8x6+...
由数列性质容易推知 x 2 g ( x ) + x g ( x ) + x = g ( x ) x^2g(x)+xg(x)+x=g(x) x2g(x)+xg(x)+x=g(x)
整理得 g ( x ) = x 1 − x − x 2 g(x)=\frac{x}{1-x-x^2} g(x)=1−x−x2x​
我们需要将生成函数还原。设 g ( x ) = a 1 − c x + b 1 − d x g(x)=\frac{a}{1-cx}+\frac{b}{1-dx} g(x)=1−cxa​+1−dxb​
化简解得参数,于是得到递推式。具体请读者计算。

开篇第四个式子的解释

upd on 2019.4.18
广义二项式定理描述为 1 ( 1 − x ) n = ∑ i = 0 ∞ ( − n i ) x i \frac{1}{(1-x)^n}=\sum_{i=0}^\infty\binom{-n}{i}x^i (1−x)n1​=i=0∑∞​(i−n​)xi
其中 ( − n i ) = ( − n ) ! i ! ( − n − i ) ! = ( − 1 ) n − 1 1 ( n − 1 ) ! ∞ i ! ( − 1 ) n + i − 1 1 ( n + i − 1 ) ! ∞ = ( n + i − 1 ) ! i ! ( − 1 ) i ( n − 1 ) ! = ( − 1 ) i ( n + i − 1 i ) \binom{-n}{i}=\frac{(-n)!}{i!(-n-i)!}=\frac{(-1)^{n-1}\frac{1}{(n-1)!}\infty}{i!(-1)^{n+i-1}\frac{1}{(n+i-1)!}\infty}=\frac{(n+i-1)!}{i!(-1)^i(n-1)!}=(-1)^i\binom{n+i-1}{i} (i−n​)=i!(−n−i)!(−n)!​=i!(−1)n+i−1(n+i−1)!1​∞(−1)n−1(n−1)!1​∞​=i!(−1)i(n−1)!(n+i−1)!​=(−1)i(in+i−1​)
然后再吃掉一个负号就行了。

总之原来写的式子肯定是对的……这个是什么我就不知道了

指数型生成函数 EGF

函数 f ( x ) = a x f(x)=a_x f(x)=ax​的指数型生成函数为 h ( x ) = ∑ i = 0 ∞ a i x i i ! h(x)=\sum_{i=0}^\infty \frac{a_ix^i}{i!} h(x)=∑i=0∞​i!ai​xi​。
由泰勒展开,新的公式是 ∑ i = 0 ∞ x i i ! = e x \sum_{i=0}^\infty \frac{x^i}{i!}=e^x ∑i=0∞​i!xi​=ex。同样可以通过代换 x x x得到很多公式变形。以下为典型变形:
∑ i = 0 ∞ x 2 i ( 2 i ) ! = e x + e − x 2 \sum_{i=0}^\infty \frac{x^{2i}}{(2i)!}=\frac{e^x+e^{-x}}{2} ∑i=0∞​(2i)!x2i​=2ex+e−x​;
∑ i = 0 ∞ x 2 i + 1 ( 2 i + 1 ) ! = e x − e − x 2 \sum_{i=0}^\infty \frac{x^{2i+1}}{(2i+1)!}=\frac{e^x-e^{-x}}{2} ∑i=0∞​(2i+1)!x2i+1​=2ex−e−x​。
数列{0,1,0,-1,0,1,0,-1….}的指数型生成函数为sin(x),数列{1,0,-1,0,1,0,-1,0….}的指数型生成函数为cos(x)。

练习题:求选n个水果的方案数。苹果、香蕉、橙子、梨都有无限个,但苹果要选奇数个,香蕉要选偶数个。每个水果都不同

因为是排列问题,所以用指数型生成函数。
h ( x ) = e x − e − x 2 e x + e − x 2 ( e x ) 2 h(x)=\frac{e^x-e^{-x}}{2}\frac{e^x+e^{-x}}{2}(e^x)^2 h(x)=2ex−e−x​2ex+e−x​(ex)2
= e 4 x − 1 4 =\frac{e^{4x}-1}{4} =4e4x−1​
= ∑ i = 1 ∞ 4 i x i i ! 4 =\frac{\sum_{i=1}^\infty4^i\frac{x^i}{i!}}{4} =4∑i=1∞​4ii!xi​​
= ∑ i = 1 ∞ 4 i − 1 x i i ! =\sum_{i=1}^\infty4^{i-1}\frac{x^i}{i!} =i=1∑∞​4i−1i!xi​
于是 f ( x ) = 4 x − 1 f(x)=4^{x-1} f(x)=4x−1。

生成函数的运算

upd on 2019.1.28
无论是OGF还是EGF,生成函数都可以如下计算:

  • F + G F+G F+G意义为可能是两种情况中的一种。
  • F G FG FG意义为同时选择两种情况。
  • e F e^F eF意义为自我组合(合并)。

练习题

大朋友与多叉树

叶子结点权值为 1 1 1,非叶子结点权值为儿子的权值的和,且其儿子个数 ∈ D \in D ∈D。求这样的根节点权值为 S S S的无标号且儿子形状有序的树的个数。

设 F F F表示根节点权值为 x x x的树的方案数OGF。考虑一个方案是什么,即可能是儿子数 ∈ D \in D ∈D的OGF,还有可能是一个权值为 1 1 1的叶子,其方案数为 1 1 1。 d d d个儿子是必须同时选择 d d d棵子树的, d d d可能是 D D D中的任何一个元素。由上,转移公式为 F = 1 @ 1 + ∑ d ∈ D F d F=1@1+\sum_{d\in D}F^d F=1@1+∑d∈D​Fd,其中 1 @ 1 1@1 1@1表示 1 x 1 1x^1 1x1。

于是用拉格朗日反演解出 F F F的第 S S S项即可。

城市规划

(2018.12.5)
求 n n n个点的有标号的简单连通无向图的个数。 n ≤ 130000 n\le 130000 n≤130000。

在本题中,“有标号简单连通无向图计数”的组合是“有标号简单无向图”,因此我们只需解决有标号简单无向图计数,然后用多项式取对数即可。
而有标号简单无向图计数非常简单,答案就是 2 ( n 2 ) 2^{n\choose 2} 2(2n​)。其指数型生成函数为 G ( x ) = ∑ i = 0 ∞ 2 ( i 2 ) x i i ! G(x)=\sum_{i=0}^\infty2^{i\choose 2}\frac{x^i}{i!} G(x)=∑i=0∞​2(2i​)i!xi​。

生成函数入门及应用 生成函数相关推荐

  1. 【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )

    文章目录 一.生成函数应用场景 二.使用生成函数求解递推方程 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相 ...

  2. 生成函数 计算机,计算机科学数学-生成函数-l_generating.pdf

    生成函数 生成函数在离散数学中是其中最令人惊讶的.有益的.巧妙的发 明.大体来说, 成函数变换序列问题为函数问题. 这是好的,因 为我们有一堆的数学机械操纵功能. 由于生成函数,我们可以适用 于所有关 ...

  3. nxn次方求和函数_算法|小学生都能看懂的生成函数入门教程

    作者:自为风月马前卒 链接:https://ac.nowcoder.com/discuss/179728 来源:牛客网 前言 第一次当标题党真是有点不适应 现在网上讲生成函数的教程大多都是从 开始,但 ...

  4. luogu P6078 [CEOI2004] Sweets(生成函数入门题)

    我的生成函数只有幼儿园水平/kk https://www.luogu.com.cn/problem/P6078 首先对于一种糖,它的生成函数可以写成这样,封闭形式就是 ∑ j = 0 m i x j ...

  5. 《小学生都能看懂的生成函数从入门到升天教程》《生成函数全家桶》

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 小学生都能看懂系列 目录 0x00 生成函数 0x10 例题引入 0x11 ExampleA\tt E ...

  6. 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 2 )

    文章目录 一.指数生成函数求解多重集排列示例 2 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相 ...

  7. 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 )

    文章目录 一.指数生成函数求解多重集排列示例 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 ...

  8. 【组合数学】指数生成函数 ( 证明指数生成函数求解多重集排列 )

    文章目录 一.证明指数生成函数求解多重集排列 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 ...

  9. 【组合数学】指数生成函数 ( 指数生成函数性质 | 指数生成函数求解多重集排列 )

    文章目录 一.指数生成函数性质 二.指数生成函数求解多重集排列 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | ...

最新文章

  1. 图的两种遍历算法——BFS和DFS
  2. 配置ntp时间服务器
  3. STM32 - 定时器的设定 - 基础- 0A - Timers and external trigger synchronization - 定时器和外部触发的同步
  4. log添加 oracle redo_添加Redo log Member/Group-Oracle
  5. python数组_Python数组
  6. 如何面对不讲信用的人
  7. 作为软件工程师,如何进行知识管理
  8. Linux 环境下思源黑体字体与 Java 之间的兼容性问题的解决(补充说明)
  9. QQ登录之后自动弹出“QQ网吧”怎么屏蔽?
  10. 数据挖掘 文本分类(二)搜集中文语料库与ICTCLAS分词
  11. CSM (Compatility Suport Module)兼容支持模块
  12. 什么是properties文件
  13. 《可以量化的管理学》绪论
  14. 安达智能通过注册:拟募资11.7亿 刘飞与何玉姣夫妇为大专学历
  15. OpenCV开发笔记(四十九):红胖子8分钟带你深入了解轮廓识别(图文并茂+浅显易懂+程序源码)
  16. abd获取手机应用的安装包
  17. 基于Flask实现Layui表格分页功能
  18. php相册管理插件,相册插件-ZBLOGPHP插件-鸟儿网络
  19. php 微信提现,微信支付商户提现功能介绍
  20. 下载安装dingding

热门文章

  1. 【scau算法分析设计】11075强盗分赃|17963 完美数(c)
  2. MySQL 基础 -- MySQL 数据类型说明(数值类型、字符串类型、日期时间类型)、SQL通用语法和SQL分类
  3. Java 实现回文数
  4. 红米无线连接服务器,电脑无线连接红米手机远程管理启动技巧
  5. 【Resnet】Resnet代码详解(图+代码)
  6. 【neutron】OpenStack Neutron -- 学习资料
  7. UOJ#310 【UNR #2】黎明前的巧克力:FWT
  8. 在linux系统中 创建用户账户的同时,在Linux系统中大批量建立帐户
  9. JVM进阶(十二)——JAVA 可视化分析工具
  10. 01-使用Camera Raw滤镜调色