zoukankan      html  css  js  c++  java
  • 多项式fft、ntt、fwt 总结

    做了四五天的专题,但是并没有刷下多少题。可能一开始就对多项式这块十分困扰,很多细节理解不深。

    最简单的形式就是直接两个多项式相乘,也就是多项式卷积,式子是$N^2$的。多项式算法的过程就是把卷积做一种变换,在变换后各系数相称得到新系数。其实这一步变换的构造过程挺深奥的,并不是很会。对于多项式卷积的变换就是点值。于是就有了快速变换这样的算法。

    细节问题出过很多。边界的问题容易弄错。一般如果是两个N项多项式相乘,得到的是一个$2*N-1$项的多项式,这是存在系数的,只不过一般我们只要N项的结果,所以做fft、ntt的时候总项数从$2*N$开始计算。其实这样解释比较牵强,但是原理的解释我并不清楚,稍感性理解。

    多项式卷积应该化成类似i+j=k的形式,其实差值为k也是可以卷积的(翻转一个序列,这样得到的结果序列也是反的)。

    fwt处理位运算形式的卷积,同样分治法。位运算是针对下标的,分治的时候考虑好左右两半的子答案的贡献。

    多项式全家桶,基础是求导、积分。有时候一些式子不是直接两个相乘得到另一个,可能还要先求出逆元再变回去。这时候用到的就是关于多项式的各种运算。

    具体的题目好多是和卷积、“各种数和各种反演”有关,把式子化成卷积形式进行优化。

    没有时间写每个题解了,做题也很少,好多东西还没学。这块综合了不少东西,前置内容就有很多。

    可能多项式要咕一大截了,难受。

  • 相关阅读:
    javase程序设计上机作业2
    操作系统课堂笔记——01,操作系统介绍
    javase程序设计上机作业1
    Matlab学习笔记1—MATLAB基础知识
    Matlab学习笔记0—课程导入
    【转】WEB技术发展简史
    leetcode-79-单词搜索(用dfs解决)
    leetcode-78-子集(用bfs解决)
    leetcode-74-搜索二维矩阵
    leetcode-46-全排列
  • 原文地址:https://www.cnblogs.com/Duan-Yue/p/12047212.html
Copyright © 2011-2022 走看看