矩陣快速求冪

2021-09-26 04:55:24 字數 763 閱讀 8685

今天看《劍指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...