为什么我的 strassen 算法不适用于 3x3 矩阵?

Why doesn't my strassen algorithm work for 3x3 matrices?

我已经为 strassen 算法实现了以下代码 http://www.sanfoundry.com/java-program-strassen-algorithm/。 它适用于大多数矩阵,包括 2x2 和 4x4 矩阵,但不适用于 3x3 矩阵。知道为什么以及如何解决它吗?

看看施特拉森的工作方式。它通过分而治之来工作。您没有 post 您的代码,但它可能与尝试将 3x3 矩阵分成 4 个子矩阵有关,这是无法完成的。您可以用零填充 3x3 以创建一个维度可以拆分的矩阵,或者只使用基本矩阵乘法。

此外,Strassen 和递归 MM 算法需要一个基本情况,在该情况下它会进行常规矩阵乘法,因为 Strassen 仅适用于较大的矩阵。取决于您的系统,但我的笔记本电脑需要大于 256x256 的矩阵才能让 Strassen 看到改进。