2012-09-05 131 views
2

我正在经历一些面试问题,并偶然发现了这个问题。 p(x)= a0 + a1x + a2x^2 + ... + anx^n。你可以用什么算法来计算O(N^2)中p(x)的值?我对如何解决这个问题完全无能为力。算术算法

+2

哪个值?我还认为你的意思是p(x)= a0 + a1x + a2x^2 + ... + anx^n。 –

+1

那是什么工作? – 2012-09-05 16:49:31

+0

P(x)的值和是的,这就是我的意思 –

回答

4

您可以在O(N)直接评估或Horner's method。用于各种操作的复杂性和所涉及的方法的有用的图表可以在这里找到:

Computational complexity of mathematical operations

Horner的方法是,优化形式(A + Bx的),其使用本机进行评价的“子表达式的串行过程在某些体系结构上乘加指令“。更平行的版本是Estrin's scheme

由于您可以在O(N)时间内计算p(x),因此您可以使用此方法N来实现O(N^2)(如果那真的是您之后的......)。

+0

明确要求在O(N^2) –

+0

中完成@NickChris O(N^2)是O (N)。 – sepp2k

+0

也许面试官认为'pow(X,N)'在O(N)时间内使用迭代乘法实现?在这种情况下,直接评估是O(N^2)。 – Kevin

1

由于每个学期都是独立的,有N个条件,必须执行O(N)计算多项式项。由于最差的演员任期为(a_n)*(x^n),而x^n可以在O(N)中计算出来,因此您确切地具有O(N^2)时间来实现算法的天真实施。

然而,有些技巧在小于O(N)的时间内计算x^n,因此您可以做得更好:请参阅an implementation of pow()。另外Hoener的方法如其他答案所描述的那样提供了一个快速的实现,其时间是O(N),因此也是O(N^2)时间。