[多项式] FFT小计

news/发布时间2024/5/19 13:02:36

引入

给出两个多项式 \(A,B\) ,计算它们相乘的结果。

我们能轻易写出 code:

for(int i=0;i<=n;i++)for(int j=0;j<=n;j++)C[i+j]+=A[i]*B[j];

然后超时了。
FFT 是一种将多项式乘法优化成 \(O(n\log n)\) 的神仙算法。

分析

上面的式子没有任何优化空间。
什么意思呢?就是怎么乱搞都优化不了。于是我们看看天才算法是怎么搞的。

点值表示法

我们知道 \(n\) 个点确定一条 \(n-1\) 次多项式。
所以我们把多项式转到平面上。
我们随便取 \(2n+1\) 个点,先在 \(A\) 中计算出这些点,表示成 \((x,y_A)\),然后在 \(B\) 中计算出这些点:\((x,y_B)\) ,然后我们就能很容易计算出 \(y_C=y_A\times y_B\) 。然后我们用 \(n\) 个点确定一条多项式。

天才思路!但是是不是有什么不对的地方?
计算一个点是 \(O(n)\) 的,然后有 \(n\) 个点要计算...时间复杂度 \(O(n^2)\)

如果只是随便取点,就是低估了傅里叶的上限了。

取点

我们想想我们有没有知道一个点 \(x_1\) 的值,就能马上另一点的值呢?
我们先来看二次函数 \(f(x)=x^2\)
如果知道 \(f(5)=25\),马上就能知道 \(f(-5)=25\)
再来看看三次函数 \(f(x)=x^3\),和二次函数一样,但是加个负号就行,说人话就是奇偶函数。

我们推广到多项式这一般形式:
\(A(x)=16x^5+22x^4+7x^3+5x^2+13x+8\)
我们把奇偶次数分开一下:

\[p=16x^5+7x^3+13x \]

\[q=22x^4+5x^2+8 \]

假设我们算出 \(x\) 点的取值为 \(p+q\) ,那么 \(-x\) 点的取值不就是 \(q-p\) 吗!

也就是说,我们现在只需要取 \(\frac{n}{2}\) 这么多点就行了。

然后能不能继续拓展?
这个看起来能递归的样子:

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

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

相关文章

Plumed分子模拟后分析

Plumed是一个强大的分子模拟数据处理工具,可以在模拟的过程中逐步分析,也可以保存模拟的轨迹做后分析。本文紧接前面的“增强采样软件PLUMED的安装与使用”文章,还有“直方图与核密度估计”文章。介绍了如何使用Plumed后分析工具,对输出的反应坐标的轨迹进行核密度估计。技…

ubuntu 桥接模式无法上网解决

ubuntu安装,根据个人的选择来配置网络信息,以下是vmare配置桥接模式时ubuntu无法上网的处理方式: 1. vmare-》虚拟机-》设置, 选中桥接模式(复制物理状态可以不勾选)2. vmare-》编辑-》虚拟网络编辑器, 选中更改设置 2. 选中VMnet0网卡,该网卡选中电脑目前在用的网卡名…

经验之谈:我为什么选择了这样一个激进的缓存大Key治理方案

本文将结合我的一次Redis大Key的治理经验,来浅谈一下缓存大Key的治理方案选择。文中主要包括缓存大Key基础知识、大Key治理方案选择、大Key治理案例等,适合有一定开发经验的开发者阅读,希望对大家有帮助。一、引言 本文将结合我的一次Redis大Key的治理经验,来浅谈一下缓存大…

[转帖]长连接黑洞重现和分析

https://plantegg.github.io/2024/05/05/%E9%95%BF%E8%BF%9E%E6%8E%A5%E9%BB%91%E6%B4%9E%E9%87%8D%E7%8E%B0%E5%92%8C%E5%88%86%E6%9E%90/ 长连接黑洞重现和分析 这是一个存在多年,遍及各个不同的业务又反反复复地在集团内部出现的一个问题,本文先通过重现展示这个问题,然后…

Blazor/Hybird 触屏下单程序调优笔记

环境 Blazor Net8.0 + FreeSql + Bootstrap Blazor 组件 以下都是自己瞎琢磨的和官网资料搬运,肯定有不少错漏和不合理的地方,非常希望各位大佬评论区给我建议和意见. 1. 组件化需要提升渲染性能的组件,例如触摸屏显示每个商品下单数量的商品列表 避免不必要地呈现组件子树, 执…

WDS+MDT网络启动自动部署windows(十五)使用it天空万能驱动

简介: 虽然我们可以使用dism这样的工具来备份驱动,并通过适当的厂家、型号来区分并自动注入驱动,它没万能驱动用着方便呀,还得去备份。 本文目标:在MDT部署时使用it天空的万能驱动。 下载 或许是我脑子坏掉了,印象中不是这个域名。 IT天空 - 新的十年,新的天空 (itsk.co…