霍納法則簡介
假設有n+2個實數a0,a1,…,an,和x的序列,要對多項式pn(x)= anxn+an
-1xn
-1+…+a1x+a0求值,直接方法是對每一項分別求值,並把每一項求的值累加起來,這種方法十分低效,它需要進行n+(n-1)+…+1=n(n+1)/2次乘法運算和n次加法運算。有沒有更高效的演算法呢?答案是肯定的。通過如下變換我們可以得到一種快得多的演算法,即pn(x)= anxn +an
-1xn
-1+…+a1x+a0=((…(((anx +an
-1)x+an
-2)x+ an
-3)…)x+a1)x+a0,這種求值的安排我們稱為霍納法則。
具體實現:
#include using namespace std;
int horner_rule(int arr,int n,int x)
return 0;
}
使用遞迴實現霍納法則
例如,當x 3時,計算p x 2x 4 x 3 3x 2 x 5的值。對於多項式p x 2x 4 x 3 3x 2 x 5,我們按霍納法則進行變換,有 p x 2x 4 x 3 3x 2 x 5 x 2x 3 x 2 3x 1 5 x x 2x 2 x 3 1 5 x x x 2x 1 3 1 5 ...
歸併排序 霍納規則(法則) 統計逆序對
歸併排序 算導 p20 分治法中的遞迴式是基於基本模式中的三個步驟的。如先前一樣,設t n 為乙個規模為n的問題的執行時間。如果問題的規模足夠地小,如n c c為乙個常量 則得到它的直接解的時間為常量,寫作 1 假設我們把原問題分解成a個子問題,每乙個的大小是原問題的1 b。對於合併排序,a和b都是...
霍納規則(C C ,Scheme)
霍納 horner 規則是採用最少的乘法運算策略,來求多項式 a x an xn a n 1x n 1 a1x a0 在x0處的值。該規則為 a x0 anx 0 an 1 x 0 a1 x0 a0 如果光看著式子或許會有點煩躁,不妨手動設定幾個值到式子中去來手工運算一番,這樣一來也會有些親身的理解...