acm 快速傅里叶变换的理解
A(x)=A4[0](x*x)+x*A4[1](x*x);
x=1,w,w*w,w*w*w
wi means w^i
n=4;w=w[4]
result shuould be
y[0]=A4[0](1*1)+1*A4[1](1*1);
y[1]=A4[0](w*w)+w*A4[1](w*w);
y[2]=A4[0](w2*w2)+w2*A4[1](w2*w2);
y[3]=A4[0](w3*w3)+w3*A4[1](w3*w3);
1*1=w2*w2=(-1*-1) w2=w0*-1=-1;
w*w=w[2];w3*w3=w(6%4)=w*w=w[2]
w2=-1
w3=-w w3=w(1+4/2);
pro perform
=============
w[n] means e^(2πi/n)
w[4]*w[4]=w[2]
n=2, w=w[2]
A4[0](1),A4[0](w[2])
A[0]=A2[0]+A2[1]
A[1]=A2[0]-A2[1]
----
A4[1](1),A4[1](w[2])
A[2]=A2[2]+A2[3]//0,1
A[3]=A2[2]-A2[3]
==============
n=4;w=w[4]
//两边各取一半就能取到x^2,右边乘上本轮应该有的wk,这样就合理了
y[0]=A4[0](1)+1*A4[1](1)
y[2]=A4[0](1)-1*A4[1](1)
y[1]=A4[0](w[2])+w*A4[1](w[2])
y[3]=A4[0](w[2])-wA4[1](w[2])
===============
0,1,2,3
0,2,1,3
y[0]=a[0]+w[2]0*a[2];
y[1]=a[0]+w[2]1*a[2];
y[2]=a[1]+w[2]0*a[3];
y[3]=a[1]+w[2]1*a[3];
===============
y[0]=a[0]+w[2]0*a[2]+w[4]0*a[1]+w[4]0*w[2]0*a[3];
y[2]=a[0]+w[2]0*a[2]+w[4]2*a[1]+w[4]2*w[2]0*a[3];
w[4]2=-w[4]0
y[1]=a[0]+w[2]1*a[2]+w[4]1*a[1]+w[4]1*w[2]1*a[3];
y[3]=a[0]+w[2]1*a[2]+w[4]3*a[1]+w[4]3*w[2]1*a[3];
w[4]3=-w[4]1
===============
y[2]=a[0]+(w[4]2*w[4]2=w[4]4=1=w[2]0)a[2]+(w[4]2=-w[4]0=-1)....
y[3]=a[0]+(w[2]1=w[4]6=w[4]2=w[2]1)a[2]+(w[4]3=-w[4]1,)....(w[4]3*w[2]1=w[4]5=w[4](5+4)=w[4]9)*a[3];
===============
所以分析一下n=8的情况
首先分成n1=4,n2=4
此时分别递归出两层,
在回溯的时候,y0,y1,y2,y3的意义就是n=4时取的四个特征值的y
n1=4有可以分成n3=2,n4=2两层
每一段的,y0,y1的意义就是n=2时取的两个特征值的y
那么n=2时有四段这样的
其中每两段,左边一段就代表了A4[0],右边一段就代表了A4[1],这样就能合成A8[0],右边的A8[1]同理
那么其实,根据公式yk+4/2也就递推出来了(n=4时),所以连续处理的一段的左一半因为在之前的处理中
就是按照wn升幂的,所以现在直接拿出来,那么他的值就是A8[0](w^0*2),A8[0](w^1*2),A8[0](w^2*2),A8[0](w^3*2)
右边和左边当然是对称的,然后连续一整段的
什么事连续一整段呢,我解释下
像(0,1)(2,3)(4,5)(6,7)
这四段是不连续的,他们的意义都一样,w^0,w^1的取值
而(0,1,2,3,4,5,6,7),
取出的四段则是连续的,(0,4)(1,5)(2,6)(3,7)
所以每一段的旋转系数W,都要按照Wn,每次幂次加一,这样才能对的上yk=A0[(x^k)^2]+x^k*A1[(x^k)^2]
中右边的系数,n=8,最后一次回溯计算则有连续4对,k=0,1,2,3
还有一个需要注意的地方是
W8=e^(2pi*i)/8
则
W2=e^(2pi*i)/2 =W8*W8*W8*W8
除的数越小,则Wn的次数越高,而不是越低
acm 快速傅里叶变换的理解的更多相关文章
- 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】
原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/ ...
- [学习笔记] 多项式与快速傅里叶变换(FFT)基础
引入 可能有不少OIer都知道FFT这个神奇的算法, 通过一系列玄学的变化就可以在 $O(nlog(n))$ 的总时间复杂度内计算出两个向量的卷积, 而代码量却非常小. 博主一年半前曾经因COGS的一 ...
- 「快速傅里叶变换(FFT)」学习笔记
FFT即快速傅里叶变换,离散傅里叶变换及其逆变换的快速算法.在OI中用来优化多项式乘法. 本文主要目的是便于自己整理.复习 FFT的算法思路 已知两个多项式的系数表达式,要求其卷积的系数表达式. 先将 ...
- 快速傅里叶变换(FFT)详解
本文只讨论FFT在信息学奥赛中的应用 文中内容均为个人理解,如有错误请指出,不胜感激 前言 先解释几个比较容易混淆的缩写吧 DFT:离散傅里叶变换—>$O(n^2)$计算多项式乘法 FFT:快速 ...
- 快速傅里叶变换(FFT)
扯 去北京学习的时候才系统的学习了一下卷积,当时整理了这个笔记的大部分.后来就一直放着忘了写完.直到今天都腊月二十八了,才想起来还有个FFT的笔记没整完呢.整理完这个我就假装今年的任务全都over了吧 ...
- 快速傅里叶变换(FFT)_转载
FFTFFT·Fast Fourier TransformationFast Fourier Transformation快速傅立叶变换 P3803 [模板]多项式乘法(FFT) 参考上文 首 ...
- HDU 1402 A * B Problem Plus 快速傅里叶变换 FFT 多项式
http://acm.hdu.edu.cn/showproblem.php?pid=1402 快速傅里叶变换优化的高精度乘法. https://blog.csdn.net/ggn_2015/artic ...
- 51Nod 快速傅里叶变换题集选刷
打开51Nod全部问题页面,在右边题目分类中找到快速傅里叶变换,然后按分值排序,就是本文的题目顺序. 1.大数乘法问题 这个……板子就算了吧. 2.美妙的序列问题 长度为n的排列,且满足从中间任意位置 ...
- $FFT$(快速傅里叶变换)
- 概念引入 - 点值表示 对于一个$n - 1$次多项式$A(x)$,可以通过确定$n$个点与值(即$x$和$y$)来表示这唯一的$A(x)$ - 复数 对于一元二次方程 $$x^2 + 1 = 0 ...
随机推荐
- [Poi2012]Rendezvous
题目描述 给定一个n个顶点的有向图,每个顶点有且仅有一条出边. 对于顶点i,记它的出边为(i, a[i]). 再给出q组询问,每组询问由两个顶点a.b组成,要求输出满足下面条件的x.y: 从顶点a沿着 ...
- css-前端实现左中右三栏布局的常用方法:绝对定位,圣杯,双飞翼,flex,table-cell,网格布局等
1.前言 作为一个前端开发人员,工作学习中经常会遇到快速构建网页布局的情况,这篇我整理了一下我知道的一些方法.我也是第一次总结,包括圣杯布局,双飞翼布局,table-cell布局都是第一次听说,可能会 ...
- 【pytest】(十)fixture参数化-巧用params和ids优雅的创建测试数据
我们都知道参数化. 比如我要测试一个查询接口/test/get_goods_list,这个接口可以查询到商品的信息. 在请求中,我可以根据请参数goods_status的不同传值,可以查询到对应状态的 ...
- 列出HBASE所有表的相关信息,如表名、创建时间等。
import java.io.IOException; import java.util.Collection; import java.util.Iterator; import org.apach ...
- js基础(使用Canvas画图)
HTML5的元素提供了一组JavaScript API,让我们可以动态地创建图形和图像. 图形是在一个特定的上下文中创建的,而上下文对象目前有两种.第一种是2D上下文,可以执行原始的绘图操作, 比如: ...
- 基础知识——TCP协议
七层网络模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层. 五层网络模型: 1. 应用层:确定进程之间通信的性质以满足用户需求.(各种传输协议) 2. 运输层:负责主机间不同进程的通信 ...
- (转)pip和easy_install使用方式
easy_install 跟 pip 都是 Python 的套件管理程式,有了它們,在使用 Python 開發程式的時候會帶來不少方便. easy_install 和 pip 有什麼不一樣?據 pip ...
- Spring boot获取getBean
package com.job.center.quartz.common; import org.springframework.beans.BeansException; import org.sp ...
- 根据pom标签修改
sed -i "s/<count>1<\/count>/<count>2<\/count>/g" pom.xml
- npm qs 模块(中文)
本文基本使用谷歌翻译加上自己的理解,权当加深记忆. npm 简介 qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库.主要维护者:Jordan Harband最初创建者和维护者:TJ Ho ...