霍纳方法的运行时间复杂性

时间:2017-11-28 14:53:53

标签: time-complexity polynomial-math

这是Horner用于计算x处多项式值的方法的伪代码(其中a [i]表示x ^ i的系数):

y=a[0]
for i = n to 1
   y = a[i] + x*y

互联网上的许多文章都指出霍纳方法的运行时间与 n 成正比。 但由于y中的项数与(ni)成比例(当我们已经完成i次迭代时),所以不应该花费的总时间为(n-1)+(n-2).... 1这与 n ^ 2 成正比? 或者我们是否始终认为任何乘法(不论术语的数量)都需要恒定的时间?

1 个答案:

答案 0 :(得分:0)

您正在尝试计算多项式的,因此代码中的y是一个数字,而不是另一个多项式。您之前已将x定义到您希望计算多项式值的值。

是的,我们假设两个数的乘法是常数运算。因此,在每次迭代中,您执行一次乘法和一次加法,两个整数之间的操作(可能是浮点数,取决于您正在操作的字段)和一个赋值,所有这些都是常量。您执行这三项操作n次,总计O(n)

另外我相信您应该在a[n]中将y放在第一步中,然后从n-1迭代到0或者反转for循环的迭代,具体取决于关于多项式的表示。