用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的第一行)。
- 在考虑行的元素时将它们相加,在考虑列的元素时将它们相减。
- 之后使用相邻值更新值。
使用这些方法,我们可以轻松记住这些值。
广告