算法优化,最主要的目的是用来减少运算时间,像是加法、乘法的数目,以及所花的运算周期。此外还能降低硬件实现所花费的成本,像是减少缓冲器的数量、重复利用相同的硬件架构。
以下举几个例子,用以说明如何优化算法,使得矩阵演算能够最优化。
1.
从上面这个式子来看,在左边的部分需要用到两个乘法、一个加法,然而经过一些化简、合并,在右边的地方就只需要一个乘法(乘2不需要运算时间)、一个加法。
2.
,因此从原本需要四个乘法、两个加法,变成只要一个乘法、一个加法。
3.
,因此从原本的四个乘法、两个加法,变成只需要一个乘法、二个加法。
4.
, 左边的部分可以参考例子2,右边则是例子3,因此从原本的四个乘法、两个加法,变成两个乘法、四个加法。
5.
左边的部分一样可以参考例子2,所以需要一个乘法、一个加法,右边的部分则需要两个乘法,最后要将左右两式相加,因此还需要两个加法才能得到 ,所以一共需要三个乘法、三个加法。
一般来说,做傅立叶转换会用到复数的乘法,会比一般实数的乘法多上四倍,若是利用快速算法,则可以化简如下:
因此左边的部分可以参考例子2,所以需要一个乘法,右边的部分则需要两个乘法,因此可以由四个乘法变为三个乘法。
另外举一个DFT的例子,一般来说DFT会需要 个实数乘法:
,左边都是一些trivial multiplication,所以不需要乘法运算,右边则可以参考例子3,所以需要一个乘法。整个DFT的运算可以由下式表示:
所以最后一供需要 个乘法。