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

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

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

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

【问题讨论】:

标签: algorithm matrix-multiplication strassen


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 2014-05-13
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    相关资源
    最近更新 更多