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

Posted

技术标签:

【中文标题】为啥我的 strassen 算法不适用于 3x3 矩阵?【英文标题】:Why doesn't my strassen algorithm work for 3x3 matrices?为什么我的 strassen 算法不适用于 3x3 矩阵? 【发布时间】:2018-01-29 04:25:27 【问题描述】:

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

【问题讨论】:

显示相关代码片段。 您需要添加一个minimal reproducible example,这将包括代码在问题本身中,而不是链接。 @1201ProgramAlarm code is too big enter here 这就是为什么我们强调minimal 【参考方案1】:

看看施特拉森的工作方式。它的工作原理是分而治之。您没有发布代码,但它可能与尝试将 3x3 矩阵划分为 4 个无法完成的子矩阵有关。您可以用零填充 3x3 以创建一个矩阵,其维度可以拆分或仅使用基本矩阵 mult。

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

【讨论】:

以上是关于为啥我的 strassen 算法不适用于 3x3 矩阵?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 Dijkstra 算法不适用于这个特定的输入?

为啥多变量赋值适用于快速排序算法但不适用于逐行赋值?

实施 Strassen 矩阵乘法算法的问题

Strassen算法

为啥我的 NYC 代码覆盖范围不适用于 ESM?

为啥我的 C 程序不适用于评分?