用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 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告