首页 > 其他分享 >生成函数 学习笔记

生成函数 学习笔记

时间:2024-08-02 23:38:43浏览次数:9  
标签:infty 函数 dfrac sum 笔记 生成 cdots sqrt binom

生成函数 学习笔记

有一部分没地方写的组合数学,先写这里。

0. pre - learning

1. 上升/下降幂:

\[n^{\underline{k}} = n \times (n-1) \times \cdots \times (n-k+1) \]

称为 \(n\) 的下降幂。

同理:

\[n^{\overline{k}} = n \times (n-1) \times \cdots \times (n+k-1) \]

称为 \(n\) 的上升幂。

2. 组合数:

\[\operatorname{C}^m_n = \binom{n}{m} = \dfrac{n!}{m!(n-m)!} \]

组合数的几个重要公式:

对称性:

\[\binom{n}{m} = \binom{n}{n-m} \]

吸收性:

\[\binom{n}{m} = \dfrac{n}{m}\binom{n-1}{m-1} \]

递推:

\[\binom{n}{m} = \binom{n-1}{m-1} + \binom{n-1}{m} \]

证明:不妨直接拆组合数。

也可以考虑杨辉三角。

上指标求和:

\[\sum_{i=m}^n \binom{i}{m} = \binom{n+1}{m+1} \]

证明:

\[\sum_{i=m}^n \binom{i}{m} = \binom{m}{m} +\binom{m+1}{m}+\cdots+\binom{n}{m} \]

因为 \(\binom{m}{m} = 1 = \binom{m+1}{m+1}\),所以可以用上文的递推公式将右式的前两项合并得到 \(\binom{m+1}{m+1}+\binom{m+1}{m} = \binom{m+2}{m+1}\)。

接着,可以将 \(\binom{m+2}{m+1}\) 和 \(\binom{m+2}{m}\) 合并得到 \(\binom{m+3}{m+1}\)。

以此类推即可。

3. (广义)二项式定理:

\[(a+b)^n = \sum_{k=0}^{n}\dbinom{n}{k} a^{n-k}b^{k} \]

我们考虑更改组合数的定义。

广义二项式系数:

\[\binom{\alpha}{k} = \dfrac{\alpha^{\underline{k}}}{k!},\alpha \in\color{orange}\mathbb{R}\color{qaq},k\in\color{orange}\mathbb{N} \]

广义二项式定理:

\[(a+b)^\alpha = \sum_{k=0}^{\infty}\dbinom{\alpha}{k} a^{\alpha-k}b^{k} \]

证明需要求导,不会。

上指标反转:

\[\binom{n}{m} = (-1)^m\binom{m-n-1}{m} \]

证明:
考虑 \(n^{\underline{m}} = n(n-1)\cdots (n-m+1) = (-1)^m(-n)(-n+1)\cdots(m-n-1)=(m-n-1)^{\underline{m}}\)。

等价于右式。证毕。

4. 多项式定理:

对于 \((x_1+x_2+\cdots+x_t)^n\) 的展开式,\(x_1^{n_1}x_2^{n_2}\cdots x_t^{n_t}\) 项的系数是:

\[\dfrac{n!}{n_1!n_2!\cdots n_t!},\sum n_i = n \]

证明:考虑组合意义。

先从 \(n\) 中选择 \(n_1\) 个式子,方案数为 \(\dbinom{n}{n_1}\)。

接着,从 \(n-n_1\) 中选择 \(n_2\) 个式子,方案数为 \(\dbinom{n-n_1}{n_2}\)。

\(\cdots\)

最后,从 \(n-n_1-n_2-\cdots-n_{t-1}\) 中选择 \(n_t\) 个式子,方案数为 \(\dbinom{n-n_1-n_2-\cdots-n_{t-1}}{n_t}\)。

由乘法原理,方案数为 \(\dbinom{n}{n_1}\dbinom{n-n_1}{n_2}\cdots\dbinom{n-n_1-n_2-\cdots-n_{t-1}}{n_t}\)。

能够化简为:\(\dfrac{n!}{n_1!n_2!\cdots n_t!}\)。

证毕。

值得注意的是,这个问题等价于可重集的排列方案数。

1. 幂级数展开

由于广义二项式定理的存在,我们可以对某些式子进行展开。以下是几个例子:

\[\begin{aligned} \dfrac{1}{x-1} &= \sum_{k=0}^{\infty}\binom{-1}{k}(-x)^k \\&= \sum_{k=0}^{\infty}\dfrac{(-1)^kk!}{k!}(-x)^k \\&= \sum_{k=0}^{\infty} x^k \\&= 1+x+x^2+\cdots \end{aligned} \]

\[\dfrac{1}{x+1} = 1-x+x^2-x^3+x^4+\cdots \]

需要记住另外几个常见展开:

\[e^x=\sum_{n\ge 0} \dfrac{1}{n!}x^n \]

\[xe^x=\sum_{n\ge 1}\dfrac{n}{n!}x^n \]

\[e^{Cx}=\sum_{n\ge 0} \dfrac{C^n}{n!}x^n \]

\[\ln(1-x) = -\sum_{n\ge \color{orange}1}\color{qaq}\dfrac{1}{n}x^n \]

\[\dfrac{e^x+e^{-x}}{2}=\sum_{n\ge0}\dfrac{1}{(2n+1)!}x^{2n+1} \]

\[\dfrac{e^x-e^{-x}}{2}=\sum_{n\ge0}\dfrac{1}{(2n)!}x^{2n} \]

可以使用泰勒公式证明,但是 OI 中没必要。

注:我们不关心是否收敛,因为在生成函数中,重要的是系数而非值。

2.OGF

对于数列 \(A\),其 OGF 定义为:

\[A(x)=\sum_{i\ge0}A_ix^i \]

OFG 与无标号计数有关。

例:BZOJ3028 食物

首先分别给出每个条件对应的生成函数。

\(0\) 或 \(1\) 个:\(1+x\)。

\(0\) 或 \(1\) 或 \(2\) 个:\(1+x+x^2\)。

\(0\) 或 \(1\) 或 \(2\) 或 \(3\) 个:\(1+x+x^2+x^3\)。

奇数个:\(\dfrac{x}{1-x^2}\)。

偶数个:\(\dfrac{1}{1-x^2}\)。

\(3\) 的倍数:\(\dfrac{1}{1-x^3}\)。

\(4\) 的倍数:\(\dfrac{1}{1-x^4}\)。

我们将这些生成函数的式子相乘,得到:

\[\begin{aligned} f(x)&=\dfrac{x}{(1-x)^4} \\&= x\sum_{k=0}^{\infty} \binom{-4}{k}(-x)^k \\&= x\sum_{k=0}^{\infty}(-1)^k\binom{k+3}{3}(-x)^k \\&= \sum_{k=1}^{\infty}\binom{k+2}{3}x^{k} \end{aligned} \]

\([x^n]f(x)\) 就是选 \(n\) 个的答案。

正确性:多项式乘法等价于枚举在每一个对象中选择了多少个。

生成函数可以用来求数列的通项公式。

引入:化简 \(\sum_{i=0}^{\infty}(i+1)x^i\)。

设 \(S=1+2x+3x^2+\cdots\),则 \(xS=x+2x^2+3x^3+\cdots\)。

相减,得:\((1-x)S=1+x+x^2+x^3+\cdots=\dfrac{1}{1-x}\)。

解方程,得: \(S=\dfrac{1}{(1-x)^2}\)。

例:求 fib 数列的通项公式。

即求出 \(f_0=\color{orange}0\color{black},f_1=1,f_n=f_{n-2}+f_{n-1}\) 的通项公式。

依照上例子,我们设生成函数 \(f(x)=\sum_{i=0}^{\infty}f_ix^i\)。

那么有:

\[\begin{aligned} f(x) &= \sum_{i=0}^{\infty}f_ix^i \\ &= f_0+f_1x+\sum_{i=2}^{\infty} (f_{i-2}+f_{i-1}) x^i \\ &= x+\sum_{i=2}^{\infty} (f_{i-1}x^{n-1}\times x+f_{i-2}x^{n-2}\times x^2) \\ &= x+x\sum_{i=0}^{\infty}f_ix^i+x^2\sum_{i=0}^{\infty}f_ix^i \\ &= x+xf(x)+x^2f(x) \end{aligned} \]

所以 \(F=\dfrac{x}{1-x-x^2}\)。(封闭形式)

将这个式子进行因式分解,得到 \(\dfrac{x}{(1-\frac{1+\sqrt{5}}{2}x)(1-\frac{1-\sqrt{5}}{2})x}\)。

考虑到我们能够计算出形如 \(\dfrac{c}{1-kx}\) 的式子的值,因此可以使用待定系数法,将封闭形式变为 \(\dfrac{A}{1-\frac{1+\sqrt{5}}{2}x}+\dfrac{B}{1-\frac{1-\sqrt{5}}{2}x}\)。

于是有:

\[A\times (1-\dfrac{1-\sqrt{5}}{2}x) +B\times (1-\dfrac{1+\sqrt{5}}{2}x) = x \\ A+B-A(\dfrac{1-\sqrt{5}}{2}x)-B(\dfrac{1+\sqrt{5}}{2}x)=x \]

由于 \(A+B=0\),有:

\[-A\dfrac{1-\sqrt{5}}{2}-B\dfrac{1+\sqrt{5}}{2}=1 \\ A=\dfrac{1}{\sqrt{5}},B=-\dfrac{1}{\sqrt{5}} \]

所以:

\[F=-\dfrac{1}{\sqrt{5}} \times \dfrac{1}{1-\frac{1-\sqrt{5}}{2}x} + \dfrac{1}{\sqrt{5}}\times \dfrac{1}{1-\frac{1+\sqrt{5}}{2}x} \]

按一般方法进行展开,得:

\[f(x)=\sum_{n=0}^{\infty}(\dfrac{1-\sqrt{5}}{2})^nx^n \times (-\dfrac{1}{\sqrt{5}}) + \sum_{n=0}^{\infty}(\dfrac{1+\sqrt{5}}{2})^nx^n \times (\dfrac{1}{\sqrt{5}}) \]

由此,我们得到了 fib 数列的通项公式:

\[fib_n=[x^n]f(x)=\dfrac{(\dfrac{1+\sqrt{5}}{2})^n-(\dfrac{1-\sqrt{5}}{2})^n}{\sqrt{5}} \]

4.EGF

定义一个数列 \(A\) 的指数型生成函数 EGF 为:

\[f(x)=\sum_{i=0}^{\infty}f_i\dfrac{x^i}{i!} \]

EGF 一般与有标号计数有关,考虑其组合意义:

假设我们要从 \(r\) 个数中分别选择 \(x_1,x_2,x_3\) 个排成一排,记答案为 \(a_r\)。由多项式定理,\(a_r=\dfrac{r!}{x_1!x_2!x_3!}\)。

有 \(a_r=\sum_{x_1+x_2+x_3=r}\dfrac{r!}{x_1!x_2!x_3!}\),而我们在定义 EGF 时就已经预处理好了分母,但是没有处理分子 \(r!\)。

令 \(f(i)=\sum_{i=0}^{\infty}\dfrac{x^i}{i!}\),有 \(a_r=r!\times [x^r]f(x)\)。也就是在 OGF 的基础上再乘以 \(r!\)。

例:用红蓝绿 \(3\) 种颜色去涂 \(1\times n\) 的棋盘,每格涂一种颜色,求使得被涂成红色和蓝色的方格数均为偶数的的涂色方法数。

不妨设 \(G(x)=(1+\dfrac{x^2}{2!}+\dfrac{x^4}{4!}\cdots)^2(1+\dfrac{x}{1!}+\dfrac{x^2}{2!}+\dfrac{x^3}{3!}+\cdots)\)。

则:

\[\begin{aligned} G(x)&=(\dfrac{e^x+e^{-x}}{2})^2e^x \\ &=\dfrac{e^{3x}+2e^x+e^{-x}}{4} \\ &=\sum_{n=0}^{\infty}\dfrac{1}{4}(3^n+2+(-1)^n)\dfrac{x^n}{n!} \end{aligned} \]

故答案为 \(\dfrac{1}{4}(3^n+2+(-1)^n)\)。

标签:infty,函数,dfrac,sum,笔记,生成,cdots,sqrt,binom
From: https://www.cnblogs.com/ChthollyNS/p/18339881

相关文章

  • C++学习笔记之指针高阶
    数组名数组名字是数组的首元素地址。一个指针变量保存了数组元素的地址。我们就称之为数组元素指针,及数组指针。数组指针的本质是指针,指向数组中的某个元素的地址。 由于数组名可以代表数组收元素地址,数组元素是可以通过 数组名[下标]的格式访问,那么可以定义一个指针......
  • [paper阅读笔记][2023]CorpusLM: Towards a Unified Language Model on Corpusfor Kno
    文章链接:https://arxiv.org/pdf/2402.01176v2Paper的任务处理各种知识密集型任务任务的科学问题本文任务虽然是:提出一个统一的语言模型来处理各种知识密集型任务,但其实其本质科学问题是:如何提高LLMs在知识密集型任务中的检索效率。原因是:LLMs在生成文本时容易出现错误信......
  • 机械学习—零基础学习日志(高数19——函数极限理解深化)
    零基础为了学人工智能,真的开始复习高数本次学习笔记,主要讲解函数极限的计算问题。极限四则运算规则这里有几个需要注意的地方。函数极限的四则运算,需要知道极限存在才能大胆放心的使用。而且使用超实数的概念会更好帮助我们理解,极限的运算。以下图来说。大量的同学,会直接......
  • C语言——函数
    C语言——函数函数的语法函数的调用关系递归函数的主要思想是:函数其实是从上到下逐步求解的过程,把一个大的问题拆成多个小的子问题或者说把一个大的功能拆成小的功能模块,通过实现小的功能最终实现大的功能的过程。函数的语法类型标识符函数名(形式参数){函数体......
  • 微信小程序笔记完整总结,带你零基础速成微信小程序。
     ......
  • 02 Go语言操作MySQL基础教程_20240729 课程笔记
    概述如果您没有Golang的基础,应该学习如下前置课程。Golang零基础入门Golang面向对象编程GoWeb基础Go语言开发RESTAPI接口_20240728基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相关知识点即可,遇到不会的知识点再看视频......
  • 6.C基础_输入输出函数
    putchar功能:输出一个字符函数声明:intputchar(intc);返回值:参数c的ASCLL码值c:要输出的字符,可以为字符常量、字符变量或表达式注意点:输出的结果不带'\n'getchar功能:从键盘读一字符函数声明:intgetchar(void);返回值:获取数据的ASCLL码值,当输入ctrl+d时会退出获取,此......
  • Datawhale AI夏令营(AI+生命科学)深度学习-Task3直播笔记
    机器学习lgm上分思路    1、引入新特征(1)对于Task2特征的再刻画        GC含量是siRNA效率中的一个重要且基本的参数,可以作为模型预测的特征。这是因为低GC含量会导致非特异性和较弱的结合,而高GC含量可能会阻碍siRNA双链在解旋酶和RISC复合体作用下的解旋。......
  • Java HashMap 源码解读笔记(二)--xunznux
    文章目录HashMapputVal插入新值方法方法解读1.7和1.8有哪些区别resize重新哈希方法treeifyBin树化方法treeify树化方法untreeify链化方法HashMap本文主要是用于记录我在阅读Java1.8的HashMap源码所做的笔记。对于源码中的注释会进行翻译下来,并且会对其中部......
  • Java HashMap 源码解读笔记(一)--xunznux
    文章目录HashMap介绍实现说明:源码解读静态常量和内部节点类Node静态工具方法属性字段Fields未完待续。。。HashMap本文主要是用于记录我在阅读Java1.8的HashMap源码所做的笔记。对于源码中的注释会进行翻译下来,并且会对其中部分源码进行注释。这一篇文章主要......