给定系数向量和值,评估多项式的​​最快方法是什么?

时间:2011-11-19 16:35:17

标签: algorithm polynomial-math

我记得在某处读过(也许有人可以帮助记住哪里),有一种方法是评估多项式最快的方法。有些东西让我想起它与Vietta的公式有关,或者0幂函数系数是多项式任何因子的0次幂系数的乘积。

我知道维基百科说这是霍纳的最快评估方案。但是我记得你实际上根本就没有那么评价 - 它有根源吗?

我确切知道的是,有一种评估多项式的​​方法,当你看到它时,它会给你一种“哦,这是一种聪明的”感觉,但它并不太难,而且很明显。

任何人或聪明的人都可以帮助我吗?

这是“你可以通过......来评估P的基础”,然后有一个非常简单的小东西,它实际上避免了按照多项式次数的顺序进行任何实际的加法和乘法。

2 个答案:

答案 0 :(得分:1)

我认为你在寻找Fast Fourier Transform这也很好看PowerPoint on FFT。实际上,当你想要计算n个不同点的多项式值时,FFT很有用,它是O(n log n)并且比Horner算法快得多。

FFT对单位的第n个幂的幂进行处理,并使用它们之间的关系,因此当你想要计算n个不同的点值时,它非常快。

答案 1 :(得分:1)

您是否多次评估多项式?多项式特别简单吗?考虑以下多项式:

f(a) = a^(14)

如果我们想减少评估f(a)所需的乘法次数,我们可以从addition-chain exponentiation计算最小的加法链:

((a × a→b) × b→d) × d × d × b

这表明我们只使用5次乘法就可以计算f(a)。对于具有小系数的固定多项式,这可以显着节省。 Wikipeida指出:

  

在实践中......最短的加法链取幂主要用于小的固定指数,其中最短的链可以预先计算并且不会太大。

对于f(a)可能有所不同的许多实际情况,另一种方法可能是合适的,但值得注意的是替代解决方案!