[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 ...
随机推荐
- web开发必备的浏览器常识
浏览器内核: 1.使用Trident内核的浏览器:IE.Maxthon.TT.The World等: 2.使用Gecko内核的浏览器:Netcape6及以上版本.FireFox.MozillaSuit ...
- pthread_once详解和使用
转自:pthread_once()函数详解 .pthread_once()使用 在多线程环境中,有些事仅需要执行一次.通常当初始化应用程序时,可以比较容易地将其放在main函数中.但当你写一个库时,就 ...
- [Python] 糗事百科文本数据的抓取
[Python] 糗事百科文本数据的抓取 源码 https://github.com/YouXianMing/QiuShiBaiKeText import sqlite3 import time im ...
- jquery操作radio,checkbox
1. 获取radio选中的value. $('input:radio[name=sex]:checked').val(); 2. 选择 radio 按钮 (Male). $('input:radio[ ...
- 最新版本Zabbix3.4+Grafana5 整合部署
一.Grafana简介 Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite.elasticsearch.zabb ...
- 使用JDBC在MySQL数据库中快速批量插入数据
使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: void addBatch ...
- 机器学习算法中的偏差-方差权衡(Bias-Variance Tradeoff)
简单的以下面曲线拟合例子来讲: 直线拟合后,相比原来的点偏差最大,最后一个图完全拟合了数据点偏差最小:但是拿第一个直线模型去预测未知数据,可能会相比最后一个模型更准确,因为最后一个模型过拟合了,即第一 ...
- ui-router 1.0 003 lazyloading
ui-router lazyloading 支持懒加载, 真正需要的时候再去加载模块
- ios面试心得
第一部分:面试题 注意,下面这些题只是我准备的题库.在实际面试的时候我会根据面试者的水平抽出相应的题目来出的. 技术 基础 为什么说Objective-C是一门动态的语言? 讲一下MVC和MV ...
- goaccess生成nginx每日访问纪录
使用php写的,方便点 <?php // 定义全局参数 $date = date("Ymd"); $day = date("d", strtotime(' ...



