三人行必有我师焉 ——《论语·述而》
一、多项式计算的优化算法
假设 是一个多项式,求解该多项式的直接方法为计算Pn(x)中的每一项,然后求各项之和的到结果。
然而这种方法的效率并不高,因为它需要进行 n+(n-1)+(n-2)+…+1=n(n-1)/2 次乘法运算,而我们知道乘法运算的效率要远远小于加法运算,因此是否
存在一种更加高效的算法能够减少乘法运算的次数呢?由此引出下面的 “ Honor ‘s Rule ”。
这种变化的计算策略被称作 Honor ‘s Rule ,它只需要进行n次加法运算和n次乘法运算即求得结果,大大降低了运算的时间复杂度。
如果假设我们已经知道了
由归纳法可以的得到下面的多项式计算算法
算法HONOR
输入: 多项式的常数项 A(n),A(n-1)…A(1),A(0) 以及底数 x
输出:多项式计算结果 Pn(x)
1. p=A(n)
2. for j =1 to n
3. p=x*p+A(n-j)
4. end for
5. return p
二、指数计算中的优化算法
求解 y=x^n (n为整数),一般的直接计算需要n次乘法运算。
而一种更加有效的算法描述如下:
可令 m= [n/2] (这里的”[] ”表示取下整),假设我们知道如何计算 x^m
那么就有两种情况 : ① n为偶数,则 x^n=(x^m)^2
② n为奇数,则 x^n= x* (x^m)^2
由此得出一种递归的求指数计算的算法:
算法 EXPREC
输入:实数x和非负整数n
输出:x^npower(x,n)
1. if m=0 then y=1
2. else
3. y=power(x,[m/2])
4. y=y^2
5. if m is odd then y=xy
6. endif
7. return y
原文:http://www.cnblogs.com/diligent-bird/p/5377997.html