Time complexity Horner的运行时间复杂性&x27;s法

Time complexity Horner的运行时间复杂性&x27;s法,time-complexity,polynomial-math,Time Complexity,Polynomial Math,以下是霍纳方法的伪代码,用于计算x处多项式的值(其中a[i]表示x^i的系数): 互联网上的许多文章指出,霍纳方法的运行时间与n成正比。 但是,既然y中的项数与(n-i)成正比(当我们已经完成i次迭代时),那么所花费的总时间不应该是(n-1)+(n-2)…1,它与n^2成正比吗? 或者我们总是认为任何乘法(不管数量的多少),都需要一定的时间? < p>你试图计算多项式的值,所以代码中的 y>代码>是一个数字而不是另一个多项式。您在之前的某个地方定义了x,以计算多项式的值 是的,我们假设两个数的乘

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

互联网上的许多文章指出,霍纳方法的运行时间与n成正比。 但是,既然y中的项数与(n-i)成正比(当我们已经完成i次迭代时),那么所花费的总时间不应该是(n-1)+(n-2)…1,它与n^2成正比吗?
或者我们总是认为任何乘法(不管数量的多少),都需要一定的时间?

< p>你试图计算多项式的<强>值<强>,所以代码中的<代码> y>代码>是一个数字而不是另一个多项式。您在之前的某个地方定义了
x
,以计算多项式的值

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

此外,我认为您应该在第一步中将
a[n]
放入
y
,然后从
n-1
迭代到
0
,或者根据多项式的表示,反转for循环的迭代

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