嘛,本来想写一个单纯的 Poly 学习笔记,但是发现似乎 Poly 及一些其他的代数内容绑定的很深,所以就在此文一起写出了。
多项式简介
定义
在初中阶段我们已经了解了多项式,对于一个求和式 ∑aixi,如果是有限项相加,我们就称其为多项式,记为 F(x)=∑aixi。
称一个多项式 F(x) 的度为其最高次项的次数。
运算
多项式的加减法是平凡的,即次数对应的项的系数相加减。这里不过多介绍。核心的操作为多项式的乘法,即给定 F(x)=a0+a1x+a2x2+⋯+anxn,G(x)=b0+b1x1+b2x2+⋯+bmxm,我们想要计算 Q(x)=F(x)⋅G(x),我们有如下公式:
Q(x)=i=1∑nj=1∑maixi×bjxj=i=1∑nj=1∑m(ai+bj)xi+j
最终我们会得到一个度为 n+m 的多项式,由于上述算法是 O(nm) 的,我们会在后文介绍一种 O(nlogn) 时间复杂度内解决两个度数为 n 的多项式相乘的算法。
群、群论
定义
定义一个非空集 G 与一种在 G 上的运算 ⊕ 构成一个群 (G,⊕),当且仅当其满足以下条件:
- 封闭性:对于所有 x,y∈G,需要满足 x⊕y∈G。
- 结合律:对于所有 x,y,z∈G,需要满足 (x⊕y)⊕z=x⊕(y⊕z)。
- 单位元:存在一个单位元 e,满足对于所有 x∈G,有 x⊕e=e⊕x=x。
- 逆元:对于所有 x∈G,存在一个 y∈G 满足 x⊕y=y⊕x=e。
整数集 Z 与在其上的加法运算 + 构成一个群 (Z,+)。其中,单位元为 0,对于任意数 x,其逆元为 x 的相反数。
衍生结构
- 若结构 (G,⊕) 满足结合律与封闭性,我们就称其为半群。
- 若半群 (G,⊕) 满足单位元,称其为幺半群。
- 若群 (G,⊕) 还满足 ∀x,y∈G,x⊕y=y⊕x,我们称这个群为阿尔贝群。
群上的幂运算
给定一个群 G,对于任意的 g∈G,设 e 为 G 的单位元,定义 gn(n∈N) 如下:
- 当 n=0 时,gn=e。
- 当 n>0 时,gn=gn−1⊕g。
对于任意的 n∈Z,定义 gn 如下:
- 当 n≥0 时,照上文定义。
- 当 n<0 时,gn=(g−1)−n。
幂运算的性质:
- gi⊕gj=gi+j
- (gi)−1=g−i。
- gi⊕gj=gj⊕gi。
复数
方程 x2=−1 没有实根,定义 i2=−1,我们就有了 x1=i,x2=−i 两个根,此时 i 称为虚数单位。
定义复数为形如 a+bi 的数,其中 a 称为实部,bi 称为虚部。
考虑对于一个数 x,如果我们将 x 与 −1 相乘,就相当于在数轴上将其旋转 180 度。我们又有 i×i=−1,所以可以很自然地定义将 x 乘以 i 时,代表将 x 在数轴上逆时针翻转 90 度。
于是我们就将数轴拓展为复平面,其中 x 轴代表实部,y 轴代表虚部。
如图,是复数 1+i 与 5+2i 在复平面上的位置。
复数的运算
复数的加减法是平凡的。对于两个复数 a+bi 与 c+di,在复数相加时我们分别将实部与虚部相加,得到 (a+c)+(b+d)i,对于减法同理。
快速傅立叶变换 FFT