ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

EGF

2022-06-04 11:31:19  阅读:176  来源: 互联网

标签:frac sum 生成 ge exp prod EGF


\[\hat{F}(x)=\sum_{n} a_n\frac{x^n}{n!} \]

(全文都是以 EGF 为基础)

封闭形式

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

  • 这个有关于麦克劳林级数(泰勒展开的一种特殊情况)

泰勒公式

  • 若 \(x\) 在 \(x_0\) 处可导,那么当 \(x\to x_0\) 时,函数的展开式近似于:

\[f(x)=f(x_0)+\frac{f'(x_0)}{1!}x+\frac{f''(x_0)}{2!}x^2... \]

麦克劳林级数是我们在 \(x_0\to 0\) 时的展开,也就是泰勒公式的一个特殊情况

\[\ln(1-x)=\sum_{n=1}^{\infty} -\frac{1}{n}x^n \]

\[\ln(1+x)=\sum_{n=1}^{\infty}\frac{(-1)^{n+1}}{n}x^n \]

排列和圆排列

  • 长度为 \(n\) 的排列数的指数生成函数是

\[P(x)=\sum_{n\ge 0} \frac{n!x^n}{n!}=\frac{1}{1-x} \]

  • 圆排列的定义是排成一个环的方案

  • \(n\) 个数的圆排列方案为 \((n-1)!\)

\[Q(x)=\sum_{n\ge 1} \frac{(n-1)!x^n}{n!}=\sum_{n\ge 1} \frac{x^n}{n}=-\ln(1-x)=\ln (\frac{1}{1-x}) \]

  • 那么 \(\exp(Q(x))=P(x)\)

exp 的直观理解

  • 上述中一个排列的每种方案其实就是将原排列分成若干集合,每种集合组成一种置换环

  • 那么方案数就是每种划分方案后的置换环的方案数的乘积

  • 这个置换环的方案数实际上就是圆排列的方案数

  • 形式化的,假设当前有 \(n\) 个元素,求 \(A\) 的方案数,设生成函数为 \(F(x)\)

  • 每种方案可以对应将 \(n\) 个元素先划分成若干个集合,每个集合 \(B\) 的方案数的乘积,设 \(B\) 的生成函数为 \(G(x)\)

  • 那么 \(\exp(G(x))=F(x)\)

推广

  • 如果 \(n\) 个点 带标号 生成树的 EGF 是 \(G(x)\) ,\(n\) 个点 带标号 森林的 EGF 是 \(F(x)\) ,那么 \(F(x)=\exp(G(x))\)

  • 如果 \(n\) 个点带标号无向连通图的 EGF 是 \(G(x)\) ,那么 \(n\) 个点带标号无向图的 EGF 是 \(\exp(G(x))\)

应用

长度为 \(n\) 的一个错排指 \(p_i\ne i\)

求错排的指数生成函数

  • 从置换环的角度来看,实际上就是不存在长度为 1 的置换环,生成函数 \(G(x)=\sum_{n\geq 2 } \frac{x^n}{n}=\ln (\frac{1}{1-x})-x\)

  • 那么错排的生成函数是 \(\exp(G(x))\)

求有多少个映射 \(f:\{1,2,...,n\} \to \{1,2,...,n\}\) ,使得

任意一个 \(i\) 映射 \(k\) 次后等于映射 \(k-1\) 次后映射的数是同一个数

  • 考虑将 \(i\) 和 \(f_i\) 连边。相当于我们从任意一个 \(i\) 走 \(k\) 步和走 \(k-1\) 步到达的是同一个点

  • 那么整个图就是一些带一个自环的基环树组成的,且环的深度不超过 \(k\) ,假设根的深度为 \(1\)

  • 我们将环当成根,把边的方向反一下,那么整个图可以当成一些深度不超过 \(k\) 的生成树组成的

  • 假设深度不超过 \(k\) 的生成树的方案数的生成函数为 \(F_k(x)\)

  • 实际上深度不超过 \(k\) 的生成树就是用一个节点将深度不超过 \(k-1\) 的森林连起来

  • 那么 \(F_k(x)=x\exp(F_{k-1}(x))\)

  • 答案是 \([x^n]\exp (F_k(x))\)

给一个 \(n\) 个数的序列 \(a_1,a_2,...,a_n\) ,和初值为 0 的变量 \(s\) ,要求你重复一下操作 \(k\) 次

  • 在 \(1,2,...,n\) 中等概率选择一个 \(x\)
  • 令 \(s\) 加上 \(\Pi_{i\ne x} a_i\)
  • 令 \(a_x\) 减一

求 \(k\) 次操作后 \(s\) 的期望

\(1\leq n \leq 5000,1\leq k\leq 10^9,0\leq a_i\leq 10^9\)

  • 首先随便减两个数,发现最终的结果和减的顺序没有关系

  • 那么我们将一个数所有的减操作放在一起,再归纳一下,设每个数减少 \(b_i\),可以得出

\[s=\prod_{i=1}^n a_i -\prod_{i=1}^n (a_i-b_i) \]

  • 那么我们的问题就转换成了 \(\prod_{i=1}^n (a_i-b_i)\) 的期望

  • 考虑计算每种方案的 \(\prod_{i=1}^n(a_i-b_i)\) 的和,最后除 \(n^k\)

  • \(k\) 次序列中,要使得 \(i\) 出现 \(b_i\) 次的方案数是

\[\frac{k!}{b_1!b_2!...b_n!} \]

  • 这和指数生成函数的系数类似

  • 设 \(a_j\) 的指数生成函数是

\[F_j(x)=\sum_{i\ge 0} (a_j-i)\frac{x^i}{i!} \]

  • 那么答案就是 \([x^k]\prod_{j=1}^nF_j(x)\)

  • 为了快速计算答案,我们需要将 \(F_j(x)\) 转换成封闭形式

  • \(F_j(x)=a_je^x-xe^x=(a_j-x)e^x\)

  • \(\prod_{j=1}^n F_j(x)=e^{nx}\prod_{j=1}^n(a_j-x)\)

  • \(\prod_{j=1}^n (a_j-x)\) 是个 \(n\) 次多项式,可以暴力算,假设展开式是 \(\sum_{i=0}^n c_ix^i\) ,那么

\[\begin{aligned} \prod_{j=1}^n F_j(x)&=(\sum_{i\ge 0}\frac{n^ix^i}{i!})(\sum_{i=0}^n c_ix^i)\\ &=\sum_{i\ge 0}\sum_{j=0}^i c_jx^j\frac{n^{i-j}x^{i-j}}{(i-j)!}\\ &=\sum_{i\ge0}\frac{x^i}{i!}\sum_{j=0}^i n^{i-j}i^{\underline{j}}c_j \end{aligned} \]

  • 答案就是这个多项式 \(x^k\) 的系数

标签:frac,sum,生成,ge,exp,prod,EGF
来源: https://www.cnblogs.com/kzos/p/16341516.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有