我为这个问题的模糊性道歉,但我正试图找出一种方法来执行除法和征服矩形矩阵A和B的乘法,使得A = n x m和B = m x p
我已经完成了一些阅读,而Strassen的方法看起来很有希望,但我无法确定如何在矩形矩阵上使用此算法。我已经看到有些人用零填充“padding”来使两个矩阵成为正方形然后“取消填充”结果,但我不清楚unpadding阶段会带来什么。
感谢您的建议!
答案 0 :(得分:1)
结果矩阵将在“添加”到操作数矩阵的所有项目上包含零。要返回矩形结果,您只需裁剪结果,即根据操作数的维度获取结果矩阵的左上角。
然而,仅在n,m和p非常接近的情况下,填充本身似乎是明智的。当这些不成比例时,你会进行大量的零矩阵乘法。
例如,如果n = 2m = p,Strassen的算法将乘法划分为m个矩阵的7次乘法。然而,这些乘法中的4个将涉及零矩阵并且不是必需的。
我认为有两种方法可以改善效果:
为简单起见,我会选择第一个选项。
注意: 请记住,您也可以将Strassen方法用于矩形矩阵,并且在某些矩阵大小以下,额外矩阵加法的O(n ^ 2)成本变得更加显着,并且使用常规三次乘法完成小尺寸会更好。这意味着Strassen的方法对于非方形矩阵仍然很容易实现。以上期望您已经实现了方形矩阵的算法。