用C++輕鬆記住Strassen矩陣方程


這是一種基於分治法的矩陣乘法演算法。它用於乘以兩個相同大小的矩陣。

求兩個矩陣的乘積:

Strassen演算法透過簡化乘法來減少乘法的開銷。

以下是使用Strassen演算法進行的乘法:


M1 = a*(f - h)
M2 = (a + b)*h
M3 = (c + d)*e
M4 = d*(g - e)
M5 = (a + d)*(e + h)
M6 = (b - d)*(g + h)
M7 = (a - c)*(e + f)

 

這很容易記住,並且可以解碼演算法程式碼。為此,我們有一些規則,首先記住這六點:

  • 對於M的前四個值,使用AHED
  • 對於M的第五個值,使用對角線相乘
  • 對於M的第六個值,使用最後一個CR(矩陣1的最後一列和矩陣2的最後一行)。
  • 對於M的第七個值,使用第一個CR(矩陣1的第一列和矩陣2的第一行)。
  • 在考慮行的元素時將它們相加,在考慮列的元素時將它們相減。
  • 之後使用相鄰值更新值。

使用這些方法,我們可以輕鬆記住這些值。

更新於:2021年1月22日

536 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.