如何使用施特拉森算法将除 2 次方以外的度数矩阵相乘?

Posted

技术标签:

【中文标题】如何使用施特拉森算法将除 2 次方以外的度数矩阵相乘?【英文标题】:How to multiply matrices of degree other than powers of 2, using Strassen's Algorithm? 【发布时间】:2019-08-09 19:02:35 【问题描述】:

我正在学习算法课程。在涵盖分而治之的过程中,我遇到了施特拉森算法。

那么,问题是我们如何将矩阵与奇数或偶数相乘,而不是 2 的幂?

另外,我们如何将 Strassen 算法应用于不同维度的矩阵(例如将 2X3 矩阵与 3X1 矩阵相乘)?

【问题讨论】:

你读过en.wikipedia.org/wiki/…吗? 【参考方案1】:

假设矩阵的度数为n。如果你想将AB 相乘,你可以做的一个简单的事情是用零填充AB(比如A_padB_pad,这样它们就变得暗淡(k,k),其中k 是上限n 的最小幂。由于k 最多是原始尺寸的两倍,

k^log_2(7)<=3 * N^log_2(7)

所以算法还是O(N^log_2(7))

在一个矩阵很“薄”(比如 A 的长度支配 A 的高度)的情况下,这种方法不太适用于不同维度的矩阵。在这种情况下,您需要对矩阵进行切片以获得更像正方形的矩阵,正如@neil-edelman 的评论所述。确定薄度的方法可能是查看BND&gt;dim(A)[1]/dim(A)[0]&gt;bnd 是否是bndBND 是预先选择的一些常数参数,接近1。

【讨论】:

以上是关于如何使用施特拉森算法将除 2 次方以外的度数矩阵相乘?的主要内容,如果未能解决你的问题,请参考以下文章

生成树计数算法

MatrixTree速成

python二元一次方程求根简单

线性回归的基本概念以及正规方程

51nod 1113 矩阵快速幂 如题目

AlphaTensor横空出世!打破矩阵乘法计算速度50年纪录,DeepMind新研究再刷Nature封面,详细算法已开源...