多项式理论 PartⅢ- 浅谈多项式计算中的转置原理与基础多项式复合

一、转置原理

称一个算法是线性算法当且仅当其运算只有初等变换(交换内存中的两个值,将一个值乘上 \(k\),将一个值加上另一个值 \(\times tk\)),例如,用于维护区间加区间求和的线段树和 NTT 是线性算法,将内存值中的值写作一个列向量,则其相当于每次左乘一个初等矩阵,由矩阵乘法结合律知若将输入变量视作 \(\vec v\),则所求为 \(A\vec v\),其中 \(A\) 由算法流程决定。

一个算法的转置问题为求 \(A^\mathsf{T}\vec v\),则对应的转置算法即为 \(v^\mathsf{T}\) 倒序乘上每个初等矩阵的转置(除第三类变换外,其余两类初等矩阵对称),这能够解决原问题的转置问题,例如前缀和和后缀和互为转置算法。

因此,要解决原问题,可以考虑优化原问题的转置问题,再将其转置为原问题的算法。

二、转置原理优化多项式多点求值

记给定点值为 \(a\),多项式的阶为 \(n\)\(n\)\(|a|\) 同阶),\(x^i\) 项的系数为 \(f_i\),所求答案的列向量为 \(b\),不妨假设 \(|a|=n\),则有:

\[\begin{bmatrix} 1 & a_1 & a_1^2 & \cdots & a_1^n\\ 1 & a_2 & a_2^2 & \cdots & a_2^n\\ 1 & a_3 & a_3^2 & \cdots & a_3^n\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & a_n & a_n^2 & \cdots & a_n^n \end{bmatrix} \begin{bmatrix} f_0\\ f_1\\ f_2\\ \vdots\\ f_n \end{bmatrix} = b \]

其转置矩阵 \(A^\mathsf{T}\) 为:

\[\begin{bmatrix} 1 & 1 & 1 & \cdots & 1\\ a_1 & a_2 & a_3 & \cdots & a_n\\ a_1^2 & a_2^2 & a_3^2 & \cdots & a_n^2\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ a_1^n & a_2^n & a_3^n & \cdots & a_n^n \end{bmatrix} \]

其意义即为对于求 \(\forall k\in[0,n]\),求 \(\sum\limits_{i=1}^{n}f_ia_i^k\)

设答案序列的生成函数 \(G(x)\),则 \(G(x)=\sum\limits_{i=1}^{n}\dfrac{f_i}{1-a_ix}\),这可以直接分治计算做到 \(\mathcal{O}(n\log^2n)\)

三、基础多项式复合与转置原理

在 2025 年的中国国家集训队论文《转置原理在一类动态规划问题中的应用》中提到,转置原理可以用于优化一类动态规划问题,

待更新。

后续可能会更新生成函数再入门(OGF,EGF,PGF,Euler 变换等),以及 ODE,d-finite 自动机,常系数非齐次线性递推,洛朗展开,拉格朗日反演,多项式复合,微分方程之类的,超几何函数,特殊数之类的,看情况吧。

orz EI!!!

posted @ 2025-02-05 15:39  hhoppitree  阅读(34)  评论(0编辑  收藏  举报