ZROI 学习笔记之数学相关

都别催!!!等我有时间了例题和详细讲解都会补回来的!!!

一些约定

  • \(\mathbf{C}\)复数集
  • \(\mathbf{Z}\)整数集
  • \(\mathbf{N}\)自然数集
  • \(\mathbf{N_+}\)正整数集
  • \(\mathbf{P}\)素数集
  • \(\forall\)全称量词,即“对于所有的……”。“\(\forall x,p(x)\)”即“对于所有的 \(x,p(x)\) 成立。”
  • \(\exists\)存在量词,即“存在至少一个……”。“\(\exists x,p(x)\)”即“存在至少一个 \(x\),使得 \(p(x)\) 成立。”
  • \(\text{s.t.}\):即 \(\text{subject to}\)使得

7.29 数论基础

本部分涉及的内容绝大部分在笔者的另一篇博客 山东游记 - 五一数学专题 中都有详细讲解,可以参考这篇博客。

1. 同余通识

你不会不知道吧! —— MichaelWong

首先,你要知道

\[a \equiv b \pmod p \]

是什么意思。然后,

\[\dfrac{a}{d} \equiv \dfrac{b}{d} \pmod {\dfrac{p}{d}} \]

也是成立的。

2. 扩展欧几里得 - ExGCD

思想与原理请见 山东游记 - 五一数学专题 中 “4.30 - Day 2\(\to\)上午\(\to\)扩展欧几里得 - exgcd”。

  • 裴蜀定理:\(\forall a,b \in \mathbf{Z},\ \exists x,y, \text{ s.t. } ax+by=(a,b).\)

  • 求解裴蜀定理的方程:扩展欧几里得。

  • \((a,b)\) 的问题转化为 \((b,a \bmod b)\) 的子问题。

  • 以前我们都是手动 swap,其实可以直接动个小手脚:

    int exgcd(int a,int b,int &x,int &y) {
        if(!b) { x=1,y=0; return a; 	}
        int g=exgcd(b,a%b,y,x);
        return y-=a/b*x,g;
    }
    
  • \(|x| \leq b,|y| \leq a.\)(所以在 \(a,b \leq 10^9\) 的时候 exgcd 才不会爆 int。)

    证明:

3. 中国剩余定理 - CRT

Chinese Remainder Theorem,AKA CRT.

思想、原理与代码实现请见 山东游记 - 五一数学专题 中 “4.30 - Day 2\(\to\)下午\(\to\)(扩展)中国剩余定理 - CRT & exCRT”。

  • 思路是将多个同余方程合并成一个;
  • 常见正解其实是扩展中剩(exCRT)。

4. 乘法逆元

思想、原理与代码实现请见 山东游记 - 五一数学专题 中 “4.30 - Day 2\(\to\)上午\(\to\)逆元”。

  • 定义:\(a^{-1} \cdot a \equiv 1 \pmod p\)
  • 何时存在逆元:\((a,p)=1\)
  • 威尔逊定理:\(\forall p \in \mathbf{P}, (p-1)! \equiv -1 \pmod p\)
  • 扩欧求逆元。
  • 费马小定理:\(\forall p \in \mathbf{P}, a \in \mathbf{Z} \setminus {0}, a^{p-1} \equiv 1 \pmod p\)
  • 欧拉定理:\(\forall (a,p)=1, a^{\varphi(p)} \equiv 1 \pmod p\)
  • 欧拉定理是费马小定理的推广,费马小定理是欧拉定理的特殊情况。
  • 线性预处理序列逆元:线性求序列前缀积,费马小 / 欧拉 / 扩欧求最后一个前缀积逆元,向前逆推前缀积逆元,前缀积乘下一个前缀积逆元获得当前数逆元。

5. Lucas 定理

思想、原理与代码实现请见 山东游记 - 五一数学专题 中 “5.1 - Day 3\(\to\)上午\(\to\)组合数的 6 种求法\(\to\)5. Lucas 定理”。

6. 大步小步 - BSGS

思想与原理请见 山东游记 - 五一数学专题 中 “5.1 - Day 3\(\to\)上午\(\to\)大步小步算法 - Baby Step Giant Step”。

  • 离散对数问题:求解 \(t\) 使得 \(a^t \equiv b \pmod p\)。(这相当于求 \(\bmod p\) 意义下的 \(\log_a b\)
  • exBSGS

7. 原根

敬请期待!


7.30 - 积性函数、筛法和莫比乌斯反演

lk!

1. 质数筛

思想与原理请见 山东游记 - 五一数学专题 中 “4.30 - Day 2\(\to\)下午\(\to\)质数筛法”。

  • 埃氏筛:\(O \left( n \cdot \sum \dfrac{1}{prime} \right) =O(n \log \log n)\)
  • 欧拉筛:即线性筛

2. 积性函数

山东游记 - 五一数学专题 的 “4.30 - Day 2\(\to\)下午\(\to\)积性函数”中有简单的介绍,但本文更加全面具体。

  • 数论函数\(f:\mathbf{N}_+ \to \mathbf{C}\)。下文函数都指数论函数。

  • 积性函数\(\forall a \bot b,f(ab)=f(a)f(b)\) 的数论函数。

    展开:常见的积性函数

    定义 \(n = \prod_{i=1}^c p_i^{k_i}\)

    • 单位函数\(\epsilon(n) = [n=1]\)完全积性);

    • 常数函数\(1(n)=1\)完全积性);

    • 恒等函数\(id_k(n)=n^k,id_1\) 简记作 \(id\)完全积性);

    • 除数函数\(\sigma_k(n)=\sum_{d \mid n} d^k,\sigma_1\) 简记作 \(\sigma,\sigma_0\) 简记作 \(d\),即 因子函数

    • 因子函数\(d(n)=\sum_{d \mid n} 1,\)

    • 欧拉函数\(\varphi(n)= \sum_{i=1}^n [ i \bot n],\)

    • 莫比乌斯函数\(\mu(n) = [ \max \{ k_i \} \leq 1] (-1)^c.\)

  • 完全积性函数\(\forall a,b,f(ab)=f(a)f(b)\) 的数论函数。

  • 数论卷积:即 狄利克雷卷积。定义两个函数 \(f(n),g(n)\) 的卷积 \(h(n)\)\(h(n)= \sum _{d \mid n} f(d) g \left( \dfrac{n}{d} \right)\),记作 \(h=f*g\)

    展开:常见积性函数的卷积

    积性函数的卷积仍是积性函数

    • \(\epsilon * f = f,\)

    • \(1 * 1 = d,\)

    • \(1 * id = \sigma,\)

    • \(1 * \varphi = id,\)

    • \(1 * \mu = \epsilon.\)

    狄利克雷卷积是一种 乘法卷积

    Q:我们平时说,多项式的 乘法卷积,他们和数论卷积是一个卷积吗?

    A:不是。他们是 加法卷积。FMT 和 FWT 是 位运算卷积,FFT 和 NTT 是 加法卷积,而 Dirichlet 卷积是 乘法卷积

3. 莫比乌斯反演

  • 形式一

    \[f(n)=\sum_{d \mid n} g(d) \iff g(n)=\sum_{d \mid n} f(d) \mu \left( \frac{n}{d} \right) , \]

    卷积形式:

    \[f = g * 1 \iff g = f * \mu. \]

  • 形式二

    \[f(n)=\sum_{n \mid d} g(d) \iff g(n)=\sum_{n \mid d} f(d) \mu \left( \frac{d}{n} \right) . \]

\(\iff\) 两边分别为 莫比乌斯变换莫比乌斯逆变换(反演)

证明

这里只给出形式一的证明 ,因为老师只讲了形式一。考虑在卷积形式下,将等式右边的 \(f\) 带入:

\[f = g * 1 \iff f * \mu = g * 1 * \mu = g * ( 1 * \mu ) = g, \]

便干净利落地完成了证明。亦可认为 \(g(n)\) 变换如下:

\[\begin{aligned} g(n) & = \sum \limits_{d \mid n} \mu \left( \dfrac{n}{d} \right) f(d) \\ & = \sum \limits_{d \mid n} \sum \limits_{e \mid d} g(e) \mu \left( \dfrac{n}{d} \right) \cdot 1 \left( \dfrac{d}{e} \right)\\ & = \sum \limits_{e} g(e) (1 * \mu) \left( \dfrac{n}{e} \right) \\ & = \sum \limits_{e} g(e) \left[ \dfrac{n}{e} = 1 \right] \\ & = g(n). \end{aligned}\]

4. 积性函数前缀和

4.1 线性求积性函数

山东游记 - 五一数学专题 的 “4.30 - Day 2\(\to\)下午\(\to\)积性函数”中给出了线性求欧拉函数的代码,线性求其他经典积性函数的推导与部分代码笔者将后期在此更新。

如果是积性函数,对于任何的 \(x\),令 \(x = \prod_{i=1}^c p_i^{k_i}\),其中 \(p_i \in \mathbf{P}\),都有

\[f(n) = \prod_{i=1}^c f \left( p_i^{k_i} \right) . \]

所以,只要可以快速求出 \(f(p^k)\),就可以在线性筛的过程中求出 \(f(x)\) 了。如 \(\varphi(x),\mu(x)\) 都可以被线性求出。

4.2 杜教筛

若要求 \(sum_{i=1}^n f(i)\),可以找到容易计算前缀和的 \(g,s\) 使得 \(g * f = s\),同时 \(g(1)=1\),令 \(F,G,S\)\(f,g,s\) 的前缀和,则有:

\[\begin{aligned} F(n) & = \sum \limits_{i=1}^n \left( s(i)-\sum \limits_{j \mid i , j \neq i} f(j) g \left( \dfrac{i}{j} \right) \right) \\ & = S(n)-\sum \limits_{i=1}^n \sum \limits_{j \mid i , j \neq i} f(j) g \left( \dfrac{i}{j} \right) \\ & = S(n)-\sum \limits_{i=1}^n \sum \limits_{j \mid i , j \neq 1} f\left( \dfrac{i}{j} \right) g(j) \\ & = S(n)-\sum \limits_{j=2}^n \sum \limits_{j \mid i} f\left( \dfrac{i}{j} \right) g(j) \\ & = S(n) - \sum \limits_{j=2}^n \sum \limits_{k=1}^{\lfloor \frac{n}{j} \rfloor} f(k) g(j) \\ & = S(n) - \sum \limits_{j=2}^n g(j) F \left( \lfloor \dfrac{n}{j} \rfloor \right). \end{aligned}\]

于是整除分块即可,直接搞复杂度 \(O(n^{\frac{3}{4}})\),预处理前 \(O(n^{\frac{2}{3}})\) 复杂度就是 \(O(n^{\frac{2}{3}})\) 了。

4.3 Powerful Number 筛

杜教筛的推广。写的还不到位,有时间会重构。

首先给出定义:\(\forall n\),如果令 $n = \prod_{i=1}^c p_i^{k_i} $,其中 \(p \in \mathbf{P}\),且 $ \min { k_i } > 1 $,则 \(n\) 是一个 Powerful Number。可以证明,这样的数字不超过 \(O( \sqrt{n} )\) 个,且一定可以表示为 \(a^2 b^3\)

假设可以构造出一个 积性函数 \(g\) 使得 \(g(p)=f(p)\),且 \(g\) 的前缀和易求,令 \(h\) 满足 \(h * g = f\),则有 \(h\) 只在 Powerful Number 处不为 \(0\),从而有:

\[\begin{aligned} F(n) & = \sum \limits_{i=1}^{n} f(i) \\ & = \sum \limits_{i=1}^n \sum_{j \mid i} h(j) g \left( \dfrac{i}{j} \right) \\ & = \sum \limits_{j=1}^n h(j) G \left( \lfloor \dfrac{n}{j} \rfloor \right) \end{aligned}\]

即可枚举 Powerful Number 计算。

4.4 Min_25 筛

从思想上来说应该叫扩展埃氏筛。霓虹选手 Min_25 发明的筛法,有点困难……后期再跟进。


7.31 - 组合数学

1. 简单容斥原理

山东游记 - 五一数学专题 中 “5.1 - Day 3\(\to\)上午\(\to\)排列数与组合数” 和 “二项式定理” 两个部分记录了一些重要的公式,而简单容斥原理的实际应用比较抽象,建议搭配例题理解大概思路,笔者后期将会把例题更新到此博客。

  • 莫比乌斯反演(经典题型:\(\gcd = 1\) 计数 转换为 \(1 * \mu\))。
  • 二项式定理、组合数与排列数。

2. Matrix - Tree 定理

2.1 前置知识:行列式

笔者认为,在此处重新介绍一遍行列式没有必要,大家完全可以去 OI - Wiki 上对行列式进行理解。在这里,我想为你提供一种形象的理解方法。

行列式实际上是有 几何意义 的。我们考虑一个 \(n\) 阶方阵

\[A = \begin{bmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n,1} & a_{n,2} & \cdots & a_{n,n} \\ \end{bmatrix},\]

他代表了什么呢?我们先考虑一个向量:

\[\begin{bmatrix} x \\ y \\ z \end{bmatrix}\]

我们都知道向量。在高中数学中,我们一般把空间向量记作一个有序三元组 \((x,y,z)\),表示从 原点 出发,指向右手笛卡尔坐标系中坐标 \((x,y,z)\) 的定长线段代表的向量。同样,对于上面的这种记法,我们也可以这样理解。

接下来,我们回到矩阵。

\[\begin{bmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n,1} & a_{n,2} & \cdots & a_{n,n} \\ \end{bmatrix}\]

一个 \(n\) 阶方阵可以看成什么呢?

\(n\) 维空间中,以 \(n\) 个向量为边所围成的平行 \(2n\) \(n-1\) 维边界体

比如,矩阵

\[\begin{bmatrix} 1 & 1 & 4 \\ 5 & 1 & 4 \\ 1 & 9 & 1 \\ \end{bmatrix}\]

就可以看做 \(3\) 维空间中,以 \(3\) 个向量

\[\begin{bmatrix} 1 \\ 5 \\ 1 \\ \end{bmatrix}, \begin{bmatrix} 1\\ 1\\ 9\\ \end{bmatrix}, \begin{bmatrix} 4 \\ 4 \\ 1 \\ \end{bmatrix}\]

为边所围成的平行六面体

而行列式,就是在求这个物体的 定向体积

可以发现,这样解释和 行列式的代数方法定义和性质 严丝合缝的吻合了:

  • 首先,不难理解矩阵的 转置矩阵 与原矩阵行列式相等。转置是两个向量空间之间的线性映射,围成的物体体积不变。这样一来,对于下面性质中,一行和一列操作等效就可以解释了。

  • 性质一:把一个行列式的某一行或某一列的所有元素同时乘以一个数 \(k\),等于用 \(k\) 乘这个行列式。

    这相当于在 拉伸 该物体的一个边,体积当然也会被 等比拉伸

  • 性质二:交换一个行列式的两行或两列,行列式改变符号。

    我们对行列式的理解是 定向 体积,交换两个向量相当于 方向改变,故结果变号。

  • 性质三:把行列式的某一行或某一列的元素乘以同一数后加到另一行或另一列的对应元素上,行列式不变。

    这相当于平移两个平行的 \(n-1\) 维边界。比如平行四边形,只要底与高相等,无论怎样平移对边都相等。故结果不变。

  • 如果一个行列式有两行或两列的对应元素成比例,那么这个行列式等于 \(0\)

    这意味着这两个向量之间 线性相关,即他们位于同一个 \(n-1\) 维欧几里得空间中。这时这个物体的 \(n\) 维体积必然为 \(0\),就像长方体的高为 \(0\) 时一样。

  • 其他性质也同样不难解释。

  • 在二阶与三阶行列式计算中成立的“对角线法则”,也变得容易理解了,因为这实际上就是 在平面施展叉积在三维空间施展混合积 的结果。这也使这个法则在高阶行列式中不成立更加容易理解了。

这实在是一个美妙的解释。

一个矩阵的行列式就是一个平行多面体的(定向的)体积,这个多面体的每条边对应着对应矩阵的列。如果学生得知了这个秘密(在纯粹的代数式的教育中,这个秘密被仔细的隐藏了起来),那么行列式的整个理论都将成为多重线性形式理论的一部分。倘若用别的方式来定义行列式,任何敏感的人都将会永远痛恨诸如行列式,Jacobian式,以及隐函数定理这些东西。

——俄国数学家阿诺尔德(Vladimir Arnold)《论数学教育》

2.2 定理思想

很好,到这里,你就可以开始对矩阵树定理的学习了。首先,我们要介绍一下 基尔霍夫矩阵

  • 无向图情况:定义度数矩阵 \(D(G)\) 为:

    \[D_{i,i}(G)= \deg (i) , D_{i,j}=0,i \neq j \]

    \(\# e(i,j)\) 为点 \(i\) 与点 \(j\) 相连的边数,并定义邻接矩阵 \(A\) 为:

    \[A_{i,j}(G) = A_{j,i}(G) = \# e(i,j), i \neq j \]

    定义 Laplace / Kirchhoff 矩阵 \(L\) 为:

    \[L(G)=D(G) - A(G) \]

    记图 \(G\) 的所有生成树个数为 \(t(G)\)

  • 有向图情况:定义出度矩阵 \(D^{out}(G)\) 为:

    \[D_{i,i}^{out}(G)= \deg^{\operatorname{out}} (i) , D_{i,j}^{out}=0,i \neq j \]

    类似地定义入度矩阵 \(D^{in}(G)\)

    \(\# e(i,j)\) 为点 \(i\) 指向点 \(j\) 的有向边数,并定义邻接矩阵 \(A\) 为:

    \[A_{i,j}(G) = \# e(i,j), i \neq j \]

    定义 出度 Laplace / Kirchhoff 矩阵 \(L^{out}\) 为:

    \[L^{out}(G)=D^{out}(G) - A(G) \]

    定义 入度 Laplace / Kirchhoff 矩阵 \(L^{in}\) 为:

    \[L^{in}(G)=D^{in}(G) - A(G) \]

    记图 \(G\) 的以 \(r\) 为根的所有根向(内向)树形图个数为 \(t^{root}(G,r)\);记图 \(G\) 的以 \(r\) 为根的所有叶向(外向)树形图个数为 \(t^{leaf}(G,r)\)

有了基尔霍夫矩阵,我们就可以介绍矩阵树定理:

  • 无向图行列式形式:

    \[t(G) = \det L(G) \begin{pmatrix} 1,2,\dots,i-1,i+1,\dots , n \\ 1,2,\dots,i-1,i+1,\dots , n \end{pmatrix} \]

    记号 $\det L(G)
    \begin{pmatrix}
    1,2,\dots,i-1,i+1,\dots , n \
    1,2,\dots,i-1,i+1,\dots , n
    \end{pmatrix}
    $ 表示矩阵 \(L(G)\) 的第 \(1,2,\dots,i-1,i+1,\dots , n\) 行和第 \(1,2,\dots,i-1,i+1,\dots , n\) 列构成的子矩阵。

    由此可知,无向图的基尔霍夫矩阵,所有的 \(n-1\) 阶主子式都相等。

  • 有向图内向形式:

    \[t^{root}(G,k) = \det L^{out}(G) \begin{pmatrix} 1,2,\dots,k-1,k+1,\dots , n \\ 1,2,\dots,k-1,k+1,\dots , n \end{pmatrix} \]

  • 有向图内向形式:

    \[t^{leaf}(G,k) = \det L^{in}(G) \begin{pmatrix} 1,2,\dots,k-1,k+1,\dots , n \\ 1,2,\dots,k-1,k+1,\dots , n \end{pmatrix} \]

3. LGV 引理

参见 OI - Wiki 吧……不会证明,只会口糊,写也是 copy 人家。


8.1 - 概率与期望,多项式与生成函数

2022.8.1 ~ 2023.8.1 在役一周年快乐!

1. 概率与期望

常用 \(P(A)\) 表示事件 \(A\) 的概率,\(E(X)\) 表示随机变量 \(X\) 的期望。

  • 定义;

  • Tail Probability 求期望;

    展开:Tail Probability 求期望

    如果 \(P(X \geq i)\)\(E(X)\) 更便于计算,考虑通过 \(P(X \geq i)\) 求得 \(E(X)\),这种方法被称作 Tail Probability

    \(p_i = P(X=i)\),有

    \[\begin{aligned} E(X) & = \sum_{i=1}^{+ \infty} i \cdot p_i \\ & = \sum_{i=1}^{+ \infty} \sum_{j=1}^{i} p_i \\ & = \sum_{j=1}^{+ \infty} \sum_{i=j}^{+ \infty} p_i \\ & = \sum_{j=1}^{+ \infty} P(X \geq j). \end{aligned}\]

    现在你知道该怎么做了。

  • 期望的线性性;

    展开:期望的线性性

    • 期望的和等于和的期望:\(E(X+Y)=E(X)+E(Y)\)

    • 常数倍的期望等于期望的常数倍: \(E(aX) = a E(X)\)

    • 推论:\(E(\sum_{i=1}^n a_i X_i) = \sum_{i=1}^n a_i E(X_i)\)

    • 是期望可以使用 DP 的本质原因;

    • \(X,Y\) 独立 的情况下,也有 \(E(XY)=E(X)E(Y)\)

  • 高阶矩:如果 \(X\) 可以拆成 \(\sum_{i=1}^n X_i\),可以考虑

    \[E(X^2) = E((\sum_{i=1}^n X_i)^2) = E(\sum_{i=1}^n \sum_{j=1}^n X_iX_j) = \sum_{i=1}^n \sum_{j=1}^n E( X_iX_j), \]

    立方的期望同理。

  • 方差:定义为 \(Var(X) = E((X-E(X))^2)\),可以推出

    \[Var(X) = E((X - E(X))^2) = E(X^2 - 2 X \cdot E(X) + E(X)^2) = E(X^2) - E(X)^2. \]

    Q:\(E(E(X))=E(X)\) 吗?

    A:是的。\(E(X)\)常数,而常数的期望就是其 本身

2. 多项式与生成函数

定义函数 \(f(x)= \sum_{i=0}^n a_i x^i\) 为关于 \(x\) 的多项式。

生成函数:对于一个数列构造的形式幂级数。对于一个数列 \(\{ a_n \}\),它对应的生成函数为

\[F(x) = \sum_{i=0}^{n} a_i k_n(x). \]

其中 \(k_n(x)\) 被称为核函数,不同的核函数会导出不同的生成函数。

2.1 普通生成函数

Ordinary Generating Function, AKA OGF.

OGF 的核函数 \(k_n(x)=x^n\)

OGF 的一大主要应用是解决 组合问题。我们先给出 OGF 的性质,方便下面的理解。

展开:OGF 的性质

令数列 \(\{ a_n \} , \{ b_n \}, \{ c_n \}\) 对应的生成函数为 \(A(x),B(x),C(x)\)

  1. \(b_n = k \cdot a_n\),则 \(B(x) = k \cdot A(x)\)

  2. \(c_n = a_n + b_n\),则 \(C(x) = A(x) + B(x)\)

  3. \(c_n = \sum_{i=0}^n a_ib_{n-i}\),则 \(C(x) = A(x) B(x)\)

  4. \(b_n = \sum_{i=0}^n a_i\),则 \(B(x) = \dfrac{A(x)}{1-x}\)

  5. \(b_n = n \cdot a_n\),则 \(B(x) = x \cdot A'(x)\)

  6. \(b_n = \dfrac{a_n}{n+1}\),则 \(B(x) = \dfrac{\int A(x) \, dx}{x}\)

前四个,读者自证不难(确信)。而后面两个涉及到导数与积分,如果你还不会,可以忽略这两条。第三条,也就是 卷积 那一条,是 OGF 最常用的性质。

所以,对于组合问题就变得非常简单了。

求多重集 \(\{1, 1, 1, 1, 2, 3, 3, 3 \}\) 中不同的 \(4\) 元多重子集的个数。

考虑每种数选择了多少个。设选择 \(1\) 的个数的生成函数为 \(A(x)\),不难得出 \(A(x)=\sum_{i=0}^4 x^i\)。同理,选择 \(2,3\) 的个数的生成函数分别为 \(B(x)=\sum_{i=0}^1 x^i,C(x)=\sum_{i=0}^3 x^i\)。故整个数列的生成函数为 \(A(x)B(x)C(x)\),答案为

\[[x^4] (1+x+x^2+x^3+x^4)(1+x)(1+x+x^2+x^3)=8, \]

其中,\([x^n]f(x)\) 表示生成函数 \(f(x)\)\(x^n\) 项的系数,即原序列中的 \(a_n\)

2.2 OGF 的妙用

事实上,OFG 的用途是 维护数列,包括但不限于上文中提到的 组合问题 的答案数列。接下来,我们简单的开一下眼界。

展开:一些经典序列

\[1,1,1,1,1,\dots \tag{1} \]

\[1,2,4,8,16,\dots \tag{2} \]

\[\dbinom{n}{0},\dbinom{n}{1},\dbinom{n}{2},\dbinom{n}{3},\dots \tag{3} \]

你可以先试试自己写出这三个序列的 OFG。写好了?答案揭晓:

展开:经典序列的 OFG

\((1)\) 式的生成函数是一个等比数列,为方便化简我们默认他是 收敛 的(收敛可以通俗理解为,无限长的式子相加最后趋于一个稳定值,不会无休止增长),这使得我们可以施展 无限长等比序列求和公式(即认为 \(a^{+ \infty+1}\) 无限趋近于 \(0\) 并省去该项),答案是

\[\sum_{i=0}^{+ \infty} x^i = \dfrac{1}{1-x}, x \in (-1,1). \]

\((2)\) 式的 OGF 事实上也是一个等比数列。答案是

\[\sum_{i=0}^{+ \infty} 2^i \cdot x^i = \sum_{i=0}^{+ \infty} (2x)^i = \dfrac{1}{1-2x}, x \in \left( - \dfrac{1}{2},\dfrac{1}{2} \right). \]

\((3)\) 式则是运用了 二项式定理。答案是

\[\sum_{i=0}^n \dbinom{n}{i} x^i = (1+x)^n. \]

在刚才的 \((1),(2)\) 式中,我们不难得出 \([x^n] \dfrac{1}{1-ax} = a^n\)。接下来,我们就可以解决一些曾经对我们来说比较棘手的问题:

\([x^n] \dfrac{1}{1 - 3x + 2x^2}\)

我们只需考虑对其 因式分解,化为我们会解决的式子:

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

\([x^n] \dfrac{1}{1 - 3x + 2x^2} = -1 + 2^{n+1}\)。如果上面拆分成两个分数比较困难,你应该可以通过解方程的方法轻而易举地化解他。

\([x^n] \dfrac{1}{(1-x)^k}\)

我们考虑一下这个东西可以理解成什么。

  1. 运算层面:可以看成 \(k\) 个上文中的 \((1)\) 式进行卷积。

  2. 导数层面:其实我也不会导数。但是这个确实可以求导解决。

  3. 组合意义:相当于选择 \(k\) 个非负整数是他们的和为 \(n\)(这就是 \(k\)\(\dfrac{1}{1-x}\) 相乘,\(x\) 的指数上做的就是这样的加法)。可以认为这是一个 \(k\) 元一次方程,考虑这样一个方程的合法解个数。当然是利用插板法,结果是 \(\dbinom{n+k-1}{k-1}\)

这就是常用的 广义二项式定理

\[\dfrac{1}{(1-x)^n}= \sum_{k=0}^{\infty} \dbinom{n+k-1}{k-1} x^k. \]

到了这里,你就可以应对很多以前无法应对的情况了。同样,你也可以试着用这种方法算出斐波那契数列的通项公式或者计算前缀平方和。网上可以参考的很多,笔者就不再耗费篇幅写这些了。接下来,我们将目光聚焦在另一种生成函数上。

2.3 指数生成函数

Exponential Generating Function, AKA EGF.

EGF 的核函数 \(k_n(x)=\dfrac{x^n}{n!}\)

EGF 的一大主要应用是解决 排列问题。同样,为了方便下面的理解,我们也给出 EGF 的性质。

展开:EGF 的性质

令数列 \(\{ a_n \} , \{ b_n \}, \{ c_n \}\) 对应的生成函数为 \(A(x),B(x),C(x)\)

EGF 的性质与 OGF 大体相同。唯一的不同点出现在 卷积 那一点上。

  • \(C(x) = A(x) B(x)\),则 \(c_n = \sum_{i=0}^n \dbinom{n}{i} a_ib_{n-i}\)

如果使用 EGF,排列问题就变得很简单了。

\(1, 2, 3, 4\) 组成的 五位数 中,要求 \(1\) 出现不超过 \(2\) 次,但 不能不出现\(2\) 出现不超过 \(1\) 次;\(3\) 出现可达 \(3\) 次;\(4\) 出现 偶数次。求这样的五位数个数。

考虑每种数选择了多少个。设选择 \(1\) 的个数的生成函数为 \(A(x)\),不难得出 \(A(x)=\sum_{i=1}^2 \dfrac{x^i}{i!}\)。同理,选择 \(2,3\) 的个数的生成函数分别为 \(B(x)=\sum_{i=0}^1 \dfrac{x^i}{i!},C(x)=\sum_{i=0}^3 \dfrac{x^i}{i!},D(x)=1+\dfrac{x^2}{2!}+\dfrac{x^4}{4!}\)。故整个数列的生成函数为 \(A(x)B(x)C(x)D(x)\),答案为

\[\left[ \dfrac{x^5}{5!} \right] (x+\dfrac{x^2}{2!})(1+x)(1+x+\dfrac{x^2}{2!}+\dfrac{x^3}{3!})(1+\dfrac{x^2}{2!}+\dfrac{x^4}{4!})=215. \]

EGF 同样拥有类似于 OGF 的记法 \(\left[ \dfrac{x^n}{n!} \right]f(x)\),表示指数生成函数 \(f(x)\)\(x^n\) 项的系数与 \(n\) 阶乘的比,即原序列中的 \(a_n\)

2.4 EGF 的妙用

生成函数嘛,都是用来 维护数列 的。EGF 的作用也不仅限于维护 排列问题 的答案数列。我们考虑能否让 EGF 也延伸出与 OGF 类似的用途。

(扇)想什么想!当然是可以啊!!!

好的,确实可以。但我们还需要一个小小的前置知识,

\[e^x = \sum_{i=0}^{+ \infty} \dfrac{x^i}{i!}. \]

啊呀这个证明应该是和什么什么 泰勒展开 啊有关,我就不多说了。咱们直接往下进行。

展开:经典序列的 EFG

  1. \(1,1,1,1,1,\dots\)

    就是 \(e^x\)。上面说了。

  2. \(1,2,4,8,16,\dots\)

    相当于上面那个加了一个 \(2^i\),所以是 \(e^{2x}\)

  3. \(0,1,2,3,4,5,\dots\)

    \[\begin{aligned}f(x) & =\sum_{i=0}^{\infty} \dfrac{i \cdot x^i }{i!}\\ & = \sum_{i=1}^{\infty} \dfrac{x^i}{(i-1)!}\\ & = \sum_{i=0}^{\infty} \dfrac{x^{i+1}}{i!}\\ & = e^x x. \end{aligned}\]

  4. \(1,\dfrac{1}{2},\dfrac{1}{3},\dfrac{1}{4},\dots\)

    \[\begin{aligned}f(x) & = \sum_{i=0}^{\infty} \dfrac{x^i}{(i+1)i!} \\& = \sum_{i=0}^{\infty} \dfrac{x^i}{(i+1)!} \\ & = \sum_{i=1}^{\infty} \dfrac{x^{i-1}}{i!} \\ & = \sum_{i=1}^{\infty} \dfrac{x^{i}}{x \cdot i!} \\ & = \dfrac{1}{x} \sum_{i=1}^{\infty} \dfrac{x^i}{i!} \\ & = \dfrac{1}{x} \cdot (e^x -1) \\ & = \dfrac{e^x - 1}{x}. \end{aligned} \]

现在你已经掌握了 EGF 的一些延伸用法。最后,我们以一次实践结束。

固定 \(n\),设 \(a_k =\sum_{i=0}^{n-1} i^k\),求 ${ a_k } $ 的 EGF。

\[\begin{aligned} f(x) & = \sum_{k=0}^{+\infty} a_k \dfrac{x^k}{k!} \\ & = \sum_{k=0}^{+ \infty} \sum_{i=0}^{n-1} \dfrac{(ix)^k}{k!} \\ & = \sum_{i=0}^{n-1} \sum_{k=0}^{+ \infty} \dfrac{(ix)^k}{k!} \\ & = \sum_{i=0}^{n-1} e^{ix} \\ & = \dfrac{e^{nx}-1}{e^x-1}. \end{aligned}\]


8.2 - 博弈论与 SG 函数

简单是真简单,离谱是真离谱,主播暂时不想写了。


8.3 - 构造

made,不想打了,构造纯人类智慧题。

posted @ 2023-07-30 14:04  二两碘酊  阅读(86)  评论(0编辑  收藏  举报