2024.9.17

server/2024/9/22 16:28:43/

生成函数1

生成函数(generating function),又称母函数,是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。

其用来计算组合数中诸如选择某一数量方案数的一种强有力的工具

加法生成函数

也算常生成函数啦

对于一个生成函数,将其定义为形式幂级数

如:
F ( x ) = ∑ n a n x n F(x) = \sum_na_nx^n F(x)=nanxn
其中a可以是有穷数列,也可以是一个无穷数列

我们通常这么写
a = < 1 , 2 , 3 > → 1 + 2 x + 3 x 2 a = < 1 , 1 , 1 , 1 , 1 > → 1 + x + x 2 + x 3 + x 4 a = < 1 , 1 , 1.... > → ∑ n ≥ 0 x n a=<1,2,3>\rightarrow 1+2x+3x^2\\ a=<1,1,1,1,1>\rightarrow 1+x+x^2+x^3+x^4 \\ a=<1,1,1....>\rightarrow \sum_{n\ge 0}x^n a=<1,2,3>→1+2x+3x2a=<1,1,1,1,1>→1+x+x2+x3+x4a=<1,1,1....>→n0xn
后面的形式就是其生成函数

其实也就是: ( 1 + x ) n (1+x)^n (1+x)n,展开利用二项式定理啊,即 1 + C n 1 x + C n 2 x 2 + ⋯ + c n n x n 1+C_n^1x+C_n^2x^2+ \dots + c_n^n x^n 1+Cn1x+Cn2x2++cnnxn

比如我们在这一堆中选k个,那么方案数就是 x k x^k xk的系数

是不是非常神奇!!!

那么我们现在考虑如下一个问题

两种物体a,b都有无限个,求取出n个的方案数

发现这个东西有两个数列,那么我们就可以根据这两个数列分别构造他们的母函数: A n , B n A_n,B_n An,Bn

怎么把他们搓在一起,解决一共选n个的问题

这个东西就叫做:生成函数卷积

就是 H n = A 0 B n + A 1 B n − 1 . . . A n B 0 H_n=A_0B_n+A_1B_{n-1}...A_nB_0 Hn=A0Bn+A1Bn1...AnB0

下面我们来讨论一下母函数的性质吧

  1. 放缩 < c g 0 , c g 1 , c g 2 , , . . . > ⇒ c G ( x ) = c g 0 , c g 1 , . . . <cg_0,cg_1,cg_2,,...>\Rightarrow cG(x)=cg_0,cg_1,... <cg0,cg1,cg2,,...>⇒cG(x)=cg0,cg1,...
  2. 加减 < f 0 ± g 0 , f 1 ± g 1 , . . . > ⇒ F ( x ) ± G ( x ) = f 0 ± g 0 + f 1 ± g 1 . . . . <f_0\pm g_0,f_1 \pm g_1 ,...>\Rightarrow F(x)\pm G(x) = f_0\pm g_0+f_1 \pm g_1 .... <f0±g0,f1±g1,...>⇒F(x)±G(x)=f0±g0+f1±g1....
  3. 右移 < 0 , 0 , . . . 0 , g 0 , g 1 , . . . > <0,0,...0,g_0,g_1,...> <0,0,...0,g0,g1,...>,前面k个0, ⇒ x k G ( x ) \Rightarrow x^kG(x) xkG(x)
  4. 求导 G ′ ( x ) = g 1 + 2 g 2 x + 3 g 3 x 2 . . . ⇒ < g 1 , 2 g 2 , 3 g 3 , . . > G'(x) = g_1+2g_2x+3g_3x^2... \Rightarrow <g_1,2g_2,3g_3,..> G(x)=g1+2g2x+3g3x2...⇒<g1,2g2,3g3,..>其实就是n-1的方案数

这些性质都非常重要且常用不过这玩意本来也不怎么考就对了


http://www.ppmy.cn/server/118417.html

相关文章

[Android][Reboot/Shutdown] 重启/关机 分析

在Android系统中&#xff0c;sys.powerctl 是一个系统属性&#xff0c;用于控制设备的电源状态。通过设置 sys.powerctl 属性&#xff0c;可以触发设备的关机或重启操作。下面详细介绍 sys.powerctl 是如何实现重启&#xff08;reboot&#xff09;的。 实现原理 设置系统属性&a…

【Linux】uImage头部信息详细解析

头部信息结构体 /** Legacy format image header,* all data in network byte order (aka natural aka bigendian).*/ typedef struct image_header {__be32 ih_magic; /* Image Header Magic Number 0x27051956 */__be32 ih_hcrc; /* Image…

Mysql 存储引擎

MySQL提供了多种存储引擎来管理不同类型的表&#xff0c;每种存储引擎都有其特定的特性和用途。 1.存储引擎&#xff1a; (1). InnoDB 特点&#xff1a;支持事务&#xff08;ACID&#xff09;、行级锁定、外键约束。用途&#xff1a;适用于高可靠性和高并发的事务型应用&#…

C# Tuple、ValueTuple

栏目总目录 Tuple Tuple是C# 4.0引入的一个新特性&#xff0c;主要用于存储一个固定数量的元素序列&#xff0c;且这些元素可以具有不同的类型。Tuple是一种轻量级的数据结构&#xff0c;非常适合用于临时存储数据&#xff0c;而无需定义完整的类或结构体。 优点 简便性&…

Android 后台服务之Persistent 属性

在 Android 开发中,有时我们需要后台服务持续运行,以保持应用的某些功能。例如,音乐播放器需要在后台播放音乐,或者健康应用需要持续跟踪用户的运动数据。后台服务是 Android 中的一种组件,它不与用户界面交互,能够在后台执行长时间运行的任务。由于 Android 系统的资源管…

【Linux】09.Linux 下的调试器——gdb/cgdb

一、gdb/cgdb的认识 我们在VS上调试时都是使用Debug版本的&#xff0c;但是在Linux下gcc/g默认生成的是Relaese版本&#xff0c;我们想要进行调试就要用-g选项生成Debug版本的程序。但是Linux下的gdb是一种命令行调试工具&#xff0c;因此就有了cgdb为我们提供可视化的调试界面…

【算法】差分思想:强大的算法技巧

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

从底层原理上解释 clickhouse 保证完全的幂等性

在分布式系统中&#xff0c;幂等性是指某个操作被多次执行&#xff0c;其效果和结果应该和执行一次相同。ClickHouse作为一个高效的OLAP数据库&#xff0c;在其底层架构和查询引擎中&#xff0c;通过多个机制和策略来确保操作的幂等性。具体来说&#xff0c;ClickHouse的幂等性…