FFT(2)

news/2024/12/21 19:33:45/文章来源:https://www.cnblogs.com/BYR-KKK/p/18448359

之前写过 FFT,但是写的有点太垃圾了。


\(*\) 指代二元运算,一般来说满足交换律和结合律。

FFT 就是当 \(*\) 为加法运算时求其卷积。先来探讨一般情况下 \(*\) 运算卷积的求法。

实际上,\(*\) 卷积就是 \(C_k=\sum\limits_{i*j=k}a_ib_j\),直接思考无法得到低于 \(O(n^2)\) 的做法。

考虑构造向量到向量的线性变换 \(\mathbb{DFT}\),使得经过线性变换后满足 \(\mathbb{DFT}(a)_i\times \mathbb{DFT}(b)_i=\mathbb{DFT}(c)_i\),同时其存在可逆变换(等价于刻画该变换的矩阵可逆)\(\mathbb{IDFT}\),将 \(\mathbb{DFT}(c)\) 经过 \(\mathbb{IDFT}\) 重新得到卷积的结果。

将刻画线性变换 \(\mathbb{DFT}\) 的矩阵称为 \(\mathbb{DFT}\) 矩阵,设为 \(A\),将原来的 \(a\)\(b\) 视作向量的形式 \(\vec{u}\)\(\vec{v}\),则需要满足:

\[(A\vec{u})_i\times (A\vec{v})_i=(A\vec{w})_i \]

简单推导,\((A\vec{w})_i=\sum\limits_{j}A_{i,j}w_j\),同样有:

\[(A\vec{u})_i=\sum\limits_{j}A_{i,j}u_j \]

\[(A\vec{v})_i=\sum\limits_{j}A_{i,j}v_j \]

根据我们刚才对 \(\mathbb{DFT}\) 变换的基本要求,其要满足:

\[(\sum\limits_{j}A_{i,j}u_j)\times(\sum\limits_{j}A_{i,j}v_j)=\sum\limits_{j}A_{i,j}w_j \]

\[\sum\limits_{j}\sum\limits_{k}A_{i,j}A_{i,k}u_jv_k=\sum\limits_{j}A_{i,j}w_j \]

如果将 \(w_j\) 重新拆成一开始的卷积形式:

\[\sum\limits_{j}\sum\limits_{k}A_{i,j}A_{i,k}u_jv_k=\sum\limits_{j}\sum\limits_{k}A_{i,j*k}u_jv_k \]

关于后面那个式子,实际上就是卷积的两种形式的转化。

根据一些与形式幂级数类似的经典结论,得到:

\[A_{i,j}A_{i,k}=A_{i,j*k} \]

对于满足 \(A_{i,j}A_{i,k}=A_{i,j*k}\) 且可逆的矩阵称为 \(\mathbb{DFT}\) 矩阵

加法卷积中的 \(\mathbb{DFT}\) 矩阵

FFT 中 \(*\) 就是数域上的加法运算,上述结论立刻得到 \(A_{i,j}A_{i,k}=A_{i,j+k}\)

一种平凡的构造是 \(A_{i,j}=a^j\),此时上述结论成立但该矩阵行列式值为 \(0\),不可逆,无法进行 \(\mathbb{IDFT}\) 变换。

稍微进行改动,取 \(A_{i,j}=a^{ij}\),这样性质依旧存在且可逆。

神秘地令 \(a=\omega_n\),即 \(A_{i,j}=\omega_n^{ij}\)

将该矩阵称为范德蒙德矩阵。

考虑其逆矩阵(刻画 \(\mathbb{IDFT}\) 的矩阵),有一种充满人类智慧的构造:

观察 \((A\times A)_{i,j}=\sum\limits_{k}A_{i,k}A_{k,j}=\sum\limits_{k}\omega_n^{k(i+j)}\),应用等比数列求和公式 \(\dfrac{a_1-a_nq}{1-q}\),得到 \(\dfrac{1-\omega_n^{n(i+j)}}{1-\omega_n^{i+j}}\)。类似地,构造 \(B_{i,j}=\omega_n^{-ij}\),得到 \((A\times B)_{i,j}=\dfrac{1-\omega_n^{n(i-j)}}{1-\omega_n^{i-j}}\),惊人的发现,\(\dfrac{1}{n}AB\) 是一个单位矩阵!于是,范德蒙德逆矩阵就是 \(\dfrac{1}{n}B\)

FFT

现在已经有了范德蒙德矩阵:\(A_{i,j}=\omega_n^{ij}\),则 \((A\vec{u})_i=\sum\limits_{j}\omega_n^{ij}\vec{u}_j\),从多项式的角度构造 \(f(x)=\sum\limits_{j}\vec{u}_jx^j\),则 \((A\vec{u})_i=f(\omega_n^i)\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808656.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Trick] 格路记数 - 反射容斥

Perface 模拟赛不会被冲烂了。 Problem I 从 \((0,0)\) 到 \((n,m)\) 方案数。 解法: \(C(n+m,m)\)。 Problem II 从 \((0,0)\) 到 \((n,m)\) 方案,但是不能经过 \(y=x+b\) 的直线。 解法: 考虑映射法。 以一条路径第一次碰到直线的位置为起点,之后所有的路线和 \(y=x+b\) …

Burp功能 细解析

情境 第六周的培训甚是有趣, 更加详细的介绍了Burp工具的功能和使用细节. 虽然很有趣, 但是我学得很慢, 练习达到熟练掌握还需要练习. 以下是第五次培训的练习题 以及我的解答. 最后一题手生, 一开始没做出来.1、安装burp,分别在本机上实现全局代理和局部代理,提供设置过程的…

高级语言程序设计第二次作业(102400106刘鑫语)

这个作业属于课程:https://edu.cnblogs.com/campus/fzu/2024C/ 作业要求:https://edu.cnblogs.com/campus/fzu/2024C/homework/13282 学号:102400106 姓名:刘鑫语 程序清单 最初都很顺利 3.1 3.2 3.3 3.4 3.5 3.6 出现了问题但一直没能解决,回宿舍后试着改成c99 依然报错,…

快乐数学4弧度

4 弧度 我们大多数人都不知道为什么圆要有 360 度。在学习高等数学或物理时,我们会记住一个神奇的数字--“圆的大小”,并将自己设置为一个 “圆的360度”。 专家们说:“弧度让数学变得更简单!”但却没有简单的理由(涉及泰勒级数的讨论并不简单)。今天,我们将揭开弧度的真…

序列化器ser.validated_data、ser.initial_data、ser.data

class LoginPwdSerializer(serializers.Serializer):mobile = serializers.CharField(required=True, validators=[RegexValidator(r"\d{11}", message="格式错误")])password = serializers.CharField(required=True)def validate_mobile(self, value):ex…

12-网络安全审计技术原理与应用

12.1 概述 1)概念 :指对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作。 作用:在于建立“事后”安全保障措施,保存网络安全事件及行为信息,为网络安全事件分析提供线索及证据,以便于发现潜在的网络安全威胁行为,开展网络安全风险分析及管理。 …

林史语其十(101-111)【下半更新】

12345鉴于收集素材与发布素材之间有一定延迟,此后林史一章分两次更新 先把存的旧东西发一下 #101故事源于 joke3579 学长博客里一份证明,涉及到求不定积分的 如果你不知道啥是不定积分,你只需要知道它是导数逆运算就行了 学长博客里写的是 :\(A\) 求导后等于 \(B\) HDK:\(…

林史语其十(101-110)【下半更新】

12345鉴于收集素材与发布素材之间有一定延迟,此后林史一章分两次更新 先把存的旧东西发一下 #101故事源于 joke3579 学长博客里一份证明,涉及到求不定积分的 如果你不知道啥是不定积分,你只需要知道它是导数逆运算就行了 学长博客里写的是 :\(A\) 求导后等于 \(B\) HDK:\(…

CF 1805 D. A Wide, Wide Graph (*1800) 思维 + 树的直径

CF 1805 D. A Wide, Wide Graph (*1800) 思维 + 树的直径 题目链接 题意:思路: 若当前点到最远的点的距离 \(< k\) , 说明 \(x\) 自己成为一个联通块。 并且我们知道距离任意一点最远的点一定是树直径的一个端点。 反之,则与直径端点在同一个联通块。 所以一个点要么独立…

Windows应急响应-Auto病毒

Windows—Auto病毒应急思路分享。目录应急背景分析样本开启监控感染病毒查看监控分析病毒行为autorun.inf分析2.异常连接3.进程排查4.启动项排查查杀1.先删掉autorun.inf文件2.使用xuetr杀掉进程3.启动项删除重启排查入侵排查正常流程 应急背景 运维人员准备通过windows共享文档…

帝国cms后台admin帐号密码忘记的处理方法

5.1 至 7.0 版本登录 phpMyAdmin访问 http://yourdomain.com/phpmyadmin。 输入数据库用户名和密码登录。选择帝国CMS 安装所在的数据库在 phpMyAdmin 主界面中,找到并选择帝国CMS 使用的数据库。找到 phome_enewsuser 表在数据库中找到名为 phome_enewsuser 的表。 单击该表以…

[OI] 树链剖分

学的时候比较朦胧,现在不朦胧了,所以写一下 讲解 重儿子:一个节点的子树大小最大的儿子 轻儿子:非重儿子 重链:节点 -> 重儿子 -> 重儿子 .. 这样的链A beautiful Tree蓝线为重链可以发现,树上的所有节点一定属于且仅属于一个重链 首先要知道如何找重链 这很简单,…