今天看《劍指offer》看到乙個遞推關係:f(n) = f(n-1) + f(n-2). 書中提出了一種簡單的演算法,也就是矩陣乘法:
如果是n次方,那麼時間複雜度應該是o(n). 那麼有沒有一種更快的演算法呢?快速冪演算法能讓時間複雜度降至o(logn).
怎麼來做快速冪演算法呢?我們首先先想乙個簡單的,乙個數字a,求他的75次冪。75的二進位制是1001011 ,所以實際上a^75 = a^64 * a^8 * a^2 *a^1. 我們把它分解成整數指數次冪的積的形式。怎麼乘呢?
int a = 4, m = 75;
int power2num = n;
int result = 1;
while(m != 0)
看明白了吧,result模擬的是每個75中為1的位所代表的的a^t這一位。每次移位power2num都需要乘以自己。
那麼矩陣是同理的。我們這裡寫了兩個函式,乙個單獨處理矩陣的乘法,另乙個是求冪:
public long matrixmult(long a, long b)
pingfang = matrixmult(pingfang, pingfang);
}return result;
}
通過這兩個函式就可以迅速求出乙個矩陣的n次方了。斐波那契數列那道題,這個2x2矩陣應該 矩陣快速求冪
在只使用標準庫的情況下,c 沒有現成的處理矩陣的標準庫,所以矩陣的運算就比較麻煩,尤其是矩陣的乘法 加減法都可以對應位置做加減,乘法的運算相對比較複雜,冪運算又會帶來的大量的乘法運算,所以這裡記錄一種 矩陣快速求冪的方法。這種方法可以將運算降低至指數次,原理是這樣的 1.矩陣a的m次方,先把m分解成...
矩陣快速冪求fib
qn是個特別可愛的小哥哥,qy是個特別好的小姐姐,他們兩個是一對好朋友 cp 劃掉 又是一年嚶花爛漫時,小qn於是就邀請了qy去嚶花盛開的地方去玩。當qy和qn來到了田野裡時,qy驚奇的發現,嚶花花瓣以肉眼可見的速度從樹上長了出來。仔細看看的話,花瓣實際上是以一定規律長出來的,而且,每次張成新的花瓣...
矩陣運算及 快速冪求矩陣
矩陣運算 這裡主要是針對方陣 是很重要的乙個環節,先說加法吧 加法比較簡單,同行同列想加就可以運算的 mat operator mat a,mat b 其次就是乘法 原理也簡單 線性代數應該學過,a i k 和 b k j 和做乘積運算得到c i j mat operator mat a,mat b...