[Algorithm] Polynomial and FFT

排序:nlogn
二分查找:logn <-- 利用单调性,查n次,每次logn
Multiply the following pairs of polynomials using at most the prescribed number
of multiplications of large numbers (large numbers are those which depend on the
coefficients and thus can be arbitrarily large).
Hint:
Let's set x^2 = y. 最高次幂变为3。再执行点乘后,P(x)*Q(x)有(3+3+1)个系数。
Consider polynomial P(x) = x^32 + 3x^18 + 5x^5 + 4 x^2 + 3x + 6. You are given a large number M. Find
the value P(M) using only 7 multiplications of large numbers.
Hint:
幂次为:32, 18, 5, 2, 1
不断自相乘,得到的幂次为:1, 2, 4, 8, 16, 32 做了五次大数计算。
32, 18 = 16+2, 5 = 4+1, 2, 1 这里的幂次的加,其实是实际的相乘,这里又是两次。
故,共七次。
Sol 1: n^2 denotes 组合方式,这是等式一侧;等式另一侧是查找logn。
Sol 2:
(1) 求任意两个变量的和,构成一个n^2长的数组。--O(n^2),每个数组下记录了由哪两个值相加。
(2) 对n^2长的数组排序。 -- n^2*log(n^2)
(3) 搜索某个值,也就是等式右边的值。 -- n^2
If m + n = a + b, 等价于在n^2长的数组上做上述类似的操作。
Therefore, 只要是两个变量的运算,就可以匹配这个O(n^2)的部分。思维简单,费空间而已。
FFT 与 多项式计算
都是成年老酒,如下两个是比较好的链接。
有关多项式的算法 (补充)
i+j=m, 0<m<2n 决定了如下的特点:

其实就是多项式相乘:
Let's suppose that
A(x) = q0 + q1*x + q2*x^2 + ... + qn*x^n
B(x) = q0 + 2*q1*x + 3*q2*x^2 + ... + (n+1)*qn*x^n
C(x) = A(x)*B(x)

Extended:
Compute all elements of the sequence F (0), F (1), F (2), . . . , F (2n) where

i * log(j+1) 分别为A(x), B(x)的coefficient.
List 理解关键点:
原式:

其DFT形式:

其实,就是用“复数”求方程的 “点值”。
然后就是FFT有关的技巧过程: Cooley-Tukey算法
( 注意,这里只是求一次点值,总共本有八次 )

计算一次点值,做了七次乘法。
通过并行,只有三层计算。
而原式中的7次方,就必然要做串行的六层计算
时间复杂度的减少并非一定是计算量的减少,而是总体计算时长的减少。
到这里,应该能看出来FFT的tricky在哪里了。
(1)
就在于 roots of complex number 的次方的规律:它是转圈圈,而不是像实数一样像无穷大发散!
故,这里求出x的次方0~7,其实就已经知道了y还有z。
(2)
每次平方的效果:值减半!
n/2次单位根 只有 n/2个,也就是说,我们要带入的值再平方以后似乎变少了一半。
递归下去计算(如上图过程),复杂度就是:

[Algorithm] Polynomial and FFT的更多相关文章
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- [LeetCode] 面试题之犄角旮旯 第叁章
题库:LeetCode题库 - 中等难度 习题:网友收集 - zhizhiyu 此处应为一个简单的核心总结,以及练习笔记. 查找一个数“在不在”?桶排序理论上貌似不错. 回文问题 ----> [ ...
- 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...
- Algorithm: 多项式乘法 Polynomial Multiplication: 快速傅里叶变换 FFT / 快速数论变换 NTT
Intro: 本篇博客将会从朴素乘法讲起,经过分治乘法,到达FFT和NTT 旨在能够让读者(也让自己)充分理解其思想 模板题入口:洛谷 P3803 [模板]多项式乘法(FFT) 朴素乘法 约定:两个多 ...
- 快速傅里叶变换(FFT)相关内容汇总
(原稿:https://paste.ubuntu.com/p/yJNsn3xPt8/) 快速傅里叶变换,是求两个多项式卷积的算法,其时间复杂度为$O(n\log n)$,优于普通卷积求法,且根据有关证 ...
- 快速构造FFT/NTT
@(学习笔记)[FFT, NTT] 问题概述 给出两个次数为\(n\)的多项式\(A\)和\(B\), 要求在\(O(n \log n)\)内求出它们的卷积, 即对于结果\(C\)的每一项, 都有\[ ...
- 【洛谷4721】【模板】分治FFT(CDQ分治_NTT)
题目: 洛谷 4721 分析: 我觉得这个 "分治 FFT " 不能算一种特殊的 FFT ,只是 CDQ 分治里套了个用 FFT (或 NTT)计算的过程,二者是并列关系而不是偏正 ...
- 浅谈FFT(快速傅里叶变换)
前言 啊摸鱼真爽哈哈哈哈哈哈 这个假期努力多更几篇( 理解本算法需对一些< 常 用 >数学概念比较清楚,如复数.虚数.三角函数等(不会的自己查去(其实就是懒得写了(¬︿̫̿¬☆) 整理了一 ...
- 【BZOJ-2179&2194】FFT快速傅里叶&快速傅里叶之二 FFT
2179: FFT快速傅立叶 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2978 Solved: 1523[Submit][Status][Di ...
随机推荐
- Saltstack 安装 命令
主机规划 10.0.0.21 master 10.0.0.22 minion 10.0.0.23 minion 基础环境 [root@10.0.0.21 ~]# cat /etc/redhat-rel ...
- CocosCreator的Sprite的更换
先上图,左侧是运行的效果, cc.Class({ extends: cc.Component, /* * cocos creator动态更换纹理 *方法一,预先在编辑器里设置好所有的纹理,绑定到对应的 ...
- 【转载】IntelliJ IDEA 内存优化最佳实践
本文转自 http://blog.oneapm.com/apm-tech/426.html [编者按]本文作者在和同事的一次讨论中发现,对 IntelliJ IDEA 内存采用不同的设置方案,会对 I ...
- 斗鱼宣布获C轮15亿融资 直播行业进入资本时代
今天,斗鱼直播宣布完成C轮15亿人民币融资,本轮融资由凤凰投资与腾讯领投,深创投.国家中小企业基金.红土成长等跟投.2016年3月,斗鱼曾获得1亿美元(约合6.7亿元人民币)B轮融资,腾讯出资4亿人民 ...
- android:AlertDialog控件
AlertDialog 可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上 的,能够屏蔽掉其他控件的交互能力,因此一般 AlertDialog 都是用于提示一些非常重要的 内容或者警告 ...
- 在 Python 中使用 in_memory 工作空间
在 Python 中使用 in_memory 工作空间 在 Python 脚本中,in_memory 工作空间仅对地理处理工具有效:它不是可以写入任何数据的通用虚拟目录. 您可以按以下代码示例所示使用 ...
- uva 1629切蛋糕(dp)
有一个n行m列的网格蛋糕,上面有一些樱桃.求使得每块蛋糕上都有一个樱桃的分割最小长度 思路:dp. #include<cstdio> #include<cstring> #in ...
- Java并发(理论知识)—— 线程安全性
1.什么是线程安全性 当多个线 ...
- Aspose.Cells设置单元格格式
使用Aspose.Cells操作Excel时,填写的参数是这样的,显然要不得! 这需要像Excel中的“转换为数字”操作,强大的Aspose.Cells可轻松解决这个问题. //默认写法 worksh ...
- JPA中自动使用@Table(name = "userTab")后自动将表名、列名添加了下划线的问题
一.问题 JPA中自动使用@Table(name = "userTab")后自动将表名.列名添加了下划线的问题,如下图: 二.解决 在application.properties文 ...



