FFT与NTT

多项式:

多项式我也不懂。。。

多项式加法:

同类项系数相加;

多项式乘法:

A*B=C

$A=a_0x^0+a_1x^1+a_2x^2+...+a_ix^i+...+a_{n-1}x^{n-1}$

$B=b_0x^0+b_1x^1+b_2x^2+...b_ix^i+...+b_{m-1}x^{m-1}$

$C=c_0x^0+c_1x^1+c_2x^2+...c_ix^i+...+c_{m+n-2}x^{m+n-2}$

其中

$$c_k=\sum_{i+j=k}^{i<n,j<m}a[i]b[j]$$

我们又称其为多项式的卷积运算。

使用定义法,直接进行卷积运算的期望效率为$O(n^2)$

离散傅里叶变换(DFT):

一个n次多项式(这里定义为最高项指数为n-1)可以被其图像上n个不重的点表示

于是这N个有序数对被称为一个多项式的点值表达式

任意N个不重的有序数对皆可

随便找N个X坐标,依次求其Y坐标,使用(数学必修2称秦九韶算法|算导称霍纳法则)可得到单次$O(n)$整体$O(n^2)$的效率

差值:

一种通过多项式的点值表达式求其系数的方法;

常用的是拉格朗日差值法;

设多项式A的点值表达式为点集

{$(x_0,y_0),(x_1,y_1),...,(x_{n-1},y_{n-1})$}

则:

$$A(x)=\sum_{k=0}^{x-1}y_k{{\Pi_{j!=k}(x-x_j)}\over{\Pi_{j!=k}(x_k-x_j)}}$$

时间: 2024-10-12 03:28:10

FFT与NTT的相关文章

FFT及NTT学习

贴上学习FFT和NTT的资料,以后再补题吧 http://blog.miskcoo.com/2015/04/polynomial-multiplication-and-fast-fourier-transform#i-15 http://blog.csdn.net/acdreamers/article/details/39005227 http://blog.csdn.net/acdreamers/article/details/39026505

多项式fft、ntt、fwt 总结

做了四五天的专题,但是并没有刷下多少题.可能一开始就对多项式这块十分困扰,很多细节理解不深. 最简单的形式就是直接两个多项式相乘,也就是多项式卷积,式子是$N^2$的.多项式算法的过程就是把卷积做一种变换,在变换后各系数相称得到新系数.其实这一步变换的构造过程挺深奥的,并不是很会.对于多项式卷积的变换就是点值.于是就有了快速变换这样的算法. 细节问题出过很多.边界的问题容易弄错.一般如果是两个N项多项式相乘,得到的是一个$2*N-1$项的多项式,这是存在系数的,只不过一般我们只要N项的结果,所以

多项式的基本运算(FFT和NTT)总结

设参与运算的多项式最高次数是n,那么多项式的加法,减法显然可以在O(n)时间内计算. 所以我们关心的是两个多项式的乘积.朴素的方法需要O(n^2)时间,并不够优秀. 考虑优化. 多项式乘积 方案一:分治乘法. 对于多项式X,Y,假设各有2m项,(即最高次数是2m-1) X,Y分别可以用两个含m项的多项式来表示,即: 则 由此可见,为了计算XY,只需计算出AC, (A+B)(C+D), BD,然后用多项式加减法求得XY即可. 设含有m项的多项式相乘的时间为T(m) 则 于是容易算出时间复杂度是,约

多项式艺术:浅谈FFT和NTT算法(未完待续)

什么是多项式? 百度百科说:“由若干个单项式相加组成的代数式叫做多项式.多项式中每个单项式叫做多项式的项,这些单项式中的最高次数,就是这个多项式的次数.” 也就是说,形如的式子,就叫做多项式.这样的式子,也能写作.很显然,多项式加上(或是减上)多项式也是多项式,复杂度是的.但是,如果多项式想要乘上一个多项式,那么也可以,最简单的方法却是的. 不过,FFT算法会告诉你,就够了. 多项式乘法 我们说的,多项式想要乘上一个多项式,那就是多项式乘法,人称“卷积”.我们方才所看到的,被称为多项式的“系数表

[拉格朗日反演][FFT][NTT][多项式大全]详解

1.多项式的两种表示法 1.系数表示法 我们最常用的多项式表示法就是系数表示法,一个次数界为\(n\)的多项式\(S(x)\)可以用一个向量\(s=(s_0,s_1,s_2,\cdots,s_n-1)\)系数表示如下:\[S(x)=\sum_{k=0}^{n-1}s_kx^k\] 系数表示法很适合做加法,可以在\(O(n)\)的时间复杂度内完成,表达式为:\[S(x)=A(x)+B(x)=\sum_{k=0}^{n-1}(a_k+b_k)x^k\] 当中\[s_k=a_k+b_k\] 但是,系数

51nod 1172 Partial Sums V2 任意模FFT

Partial Sums V2 题目连接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1172 Description 给出一个数组A,经过一次处理,生成一个 数组S,数组S中的每个值相当于数组A的累加,比如:A = {1 3 5 6} => S = {1 4 9 15}.如果对生成的数组S再进行一次累加操作,{1 4 9 15} => {1 5 14 29},现在给出数组A,问进行K次操作后的结果.(输出结果

51Nod 算法马拉松21(迎新年)

这次打算法马拉松是在星期五的晚上,发挥还算正常(废话,剩下的题都不会= =). 讲讲比赛经过吧. 8:00准时发题,拿到之后第一时间开始读. A配对,看上去像是二分图最大权匹配,一看范围吓傻了,先跳过读后面的题. B完全二叉树的方差,大概看了一遍,好神的样子,跳过. C多项式?好吧没学过FFT和NTT的我肯定不会,跳跳跳. D最大值,哎呦这函数什么破玩意儿,看不懂,跳跳跳. E B君的射击,卧槽毕克大人您出题就算了出这么一道码农题是要闹那样,跳跳跳. F那些年,我们一起讲的故事,卧槽这特么简直就

UOJ #34 多项式乘法

题目链接:多项式乘法 保存一发FFT与NTT板子. 学习链接:从多项式乘法到快速傅里叶变换 FFT NTT 注意差值回来的时候不取反也是可以的,只不过需要把数组\(reverse\)一下(根据单位复数根的性质应该不难理解) 代码(FFT): #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<co

gdoi2017爆零记

前言 这次gdoi,用三个词来形容我:爆零+爆零+爆零.本来还希望能在gdoi搞个小新闻(拿个一等然后进Day3什么的). Day0 这次gdoi是在东莞东华中学,坐个动车下午3点多就到了,然后打个滴滴去酒店(本来想跟着几位神犇去ingress,然而酒店旁边一个Portal都没有),.17:00去吃饭,结果--司机:你们有谁知道去东华中学的路吗(一脸懵逼)?东华中学实在是太**大了,一个中学占了一整条街,还是一侧初中部,一侧小学部+高中部(听说他们一个年级有50+个班,每个班抽一个学生出来都能占