算法優化,最主要的目的是用來減少運算時間,像是加法、乘法的數目,以及所花的運算週期。此外還能降低硬體實現所花費的成本,像是減少緩衝器的數量、重複利用相同的硬體架構。
以下舉幾個例子,用以說明如何優化算法,使得矩陣演算能夠最優化。
1.
從上面這個式子來看,在左邊的部分需要用到兩個乘法、一個加法,然而經過一些化簡、合併,在右邊的地方就只需要一個乘法(乘2不需要運算時間)、一個加法。
2.
,因此從原本需要四個乘法、兩個加法,變成只要一個乘法、一個加法。
3.
,因此從原本的四個乘法、兩個加法,變成只需要一個乘法、二個加法。
4.
, 左邊的部分可以參考例子2,右邊則是例子3,因此從原本的四個乘法、兩個加法,變成兩個乘法、四個加法。
5.
左邊的部分一樣可以參考例子2,所以需要一個乘法、一個加法,右邊的部分則需要兩個乘法,最後要將左右兩式相加,因此還需要兩個加法才能得到 ,所以一共需要三個乘法、三個加法。
一般來說,做傅立葉轉換會用到複數的乘法,會比一般實數的乘法多上四倍,若是利用快速演算法,則可以化簡如下:
因此左邊的部分可以參考例子2,所以需要一個乘法,右邊的部分則需要兩個乘法,因此可以由四個乘法變為三個乘法。
另外舉一個DFT的例子,一般來說DFT會需要 個實數乘法:
,左邊都是一些trivial multiplication,所以不需要乘法運算,右邊則可以參考例子3,所以需要一個乘法。整個DFT的運算可以由下式表示:
所以最後一供需要 個乘法。