一些关于多项式基底的思考

一些关于多项式基底的思考

常见的基

多项式常见的表示形式有 3 种:

  1. 普通幂:aixi
  2. 下降幂:bixi_
  3. 点值表示法(拉格朗日插值):yiijxxjxixj

这里基的定义即线性空间中的定义,{xi},{xi_},{ijxxjxixj} 均可以张成多项式的线性空间。

下降幂多项式与基底转换

在推导中,记 ci=bii!,另一种下降幂多项式的形式是牛顿级数:ci(xi)
下降幂与点值的关系非常密切。

下降幂与点值的转换

这里的点值指对于 n 次多项式,其 [0,n] 的点值。

fk=i=0kci(ki)=n!i=0kcii!×1(ki)!,得到一个卷积形式。

即转点值仅需将 OGF {bi} 卷上 exp(x)
自然的,点值转下降幂只需卷上 exp(x) 即可。

复杂度为单次卷积,O(nlogn)

值得一提的是,通过高效的将下降幂多项式转成连续点值形式,我们容易完成下降幂多项式的卷积,沿袭普通幂的思路,转成点值做点乘再逆变换回下降幂即可,复杂度为 O(nlogn)

多项式前缀和与差分

定义多项式 gf 的前缀和,g 满足:g(n)=i=0n1f(i)
类似的,差分满足:g(n)=f(n+1)f(n),n0

对于点值表示法,两者很好做,按照定义处理点值即可,容易做到 O(n)
对于下降幂多项式,一个直接的想法是转点值再转回来,有一个 O(nlogn) 的做法,但还不够好。

我们考虑直接对下降幂多项式做多项式前缀和,那么:

g(k)=i=0k1j=0ncj(ij)=j=0ncji=0k1(ij)=j=0ncj(kj+1)

可以观察到仅是将 c 向后平移了一位即可得到多项式前缀和的牛顿级数系数。

由于差分是前缀和的逆操作,改成把 c 向前平移一位即可得到多项式差分的牛顿级数系数。

时间复杂度 O(n)

下降幂与普通幂的转换

这是一个困难的问题,对于两者的互相转化,学术界目前没有低于 O(nlog2n) 的做法。

两者都可以通过分治 NTT 做到 O(nlog2n)
不过因为 NTT 寄了所以就鸽了。

但是两者转化的暴力 O(n2) 做法还是需要掌握的。

普通幂转下降幂:

i=0naixi=i=0naij=0i{ij}xj_=j=0n(i=jn{ij}ai)xj_

下降幂转普通幂:

i=0nbixi_=i=0nbij=0i[ij](1)ijxj=j=0n(i=jn(1)ij[ij]bi)xj

普通幂与点值的转换

即多项式多点求值与多项式快速插值,也都只有 O(nlog2n) 的困难做法。
虽然已经有了新时代的只需多项式求逆的多点求值做法,但是因为 NTT 死了,鸽

小结

从上述分析来看,下降幂多项式/牛顿级数的优越性在于其与点值的关系非常密切,一个重要的应用是做多项式前缀和非常方便。相较之下,普通幂在处理这类问题就要逊色许多,没有简单快速的做法。

posted @   juju527  阅读(374)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示