《算法导论》读书笔记 kirai 16/11/18 第30章 多项式与快速傅立叶变换(2)

拉格朗日插值公式以及一些变形

  拉格朗日插值公式看起来很复杂,其实自己举一个例子解一解就很容易明白了。读书的过程中发现,越是归结为简单形式的式子,用计算机编程实现起来越容易,优化的地方也就越多;举完例子发现,这玩意如果式子长了的话,还真不是人解的……

  跟我们的目标接近一下(我们的目标是求C(x),且C(x)=A(x)*B(x)),那么对A,B的任意一点(xk,yk),都有C(xk)=A(xk)*B(xk)。

  所以,想求两个多项式的乘积的时候,除了直接用系数表达来求,还可以用点值表达来求:

  先求出A(x)、B(x)的点值表达,再相乘。这个过程需要O(n)。再将点值表达插值转成系数表达需要O(n^2)。

  乍一看和前面描述的直接用系数表达求得结果的复杂度一样,都是O(n^2)的。实际上,点值表达中取点可以影响计算。用FFT可以将复杂度降到O(nlgn)。

你可能感兴趣的:(《算法导论》读书笔记 kirai 16/11/18 第30章 多项式与快速傅立叶变换(2))