击败 Strassen 算法的算法
Posted
技术标签:
【中文标题】击败 Strassen 算法的算法【英文标题】:Algorithm to beat Strassen's Algorithm 【发布时间】:2016-10-02 23:12:42 【问题描述】:Caesar 教授希望开发一种矩阵乘法算法 渐近地比 Strassen 的算法快。他的算法将使用分治法,将每个矩阵分成大小为 n/4 x n/4 的块,并且除并合并步骤将花费 Theta(n^2) 时间。
【问题讨论】:
你能证明任何努力解决这个问题吗? @ScottHunter 我在网上找到了这个解决方案,但我不明白。 clrs.skanev.com/04/05/02.html 什么解决方案?我没有看到任何解决方案。 @ScottHunter 我用解决方案的链接更新了我的回复 您能进一步解释这个问题吗?您是否要求渐近地比 Strassen 的矩阵乘法算法更快的算法的伪代码?该算法是否还应该使用具有需要 theta(n^2) 时间的组合步骤的分而治之?请澄清您的问题。 【参考方案1】:你并没有具体说明这里的问题是什么,但我想这是为了反驳这个微不足道的算法比 Strassen 运行得更快。
假设您将矩阵划分为每个维度 (n / k) X (n / k) 的块(在您的问题中,k 是 4)。那么每个矩阵会有k2个块,会有k3个块乘法(每个块在第一个矩阵将乘以第二个矩阵中的 k 个块)。因此,复杂度递归为
T(n) = k3 T(n / k) + Θ(n2).
case 1 of the Master theorem,这意味着
T(n) = Θ(nlogk(k3)) = Θ(n3 ).
这和普通的矩阵乘法一样。显然,它没有击败 Strassen。
【讨论】:
"把你的矩阵分成k个块...每个矩阵有k^2个块"? @ScottHunter 非常感谢!那是一个可怕的错字。 不,这是一个绝妙的错字:)以上是关于击败 Strassen 算法的算法的主要内容,如果未能解决你的问题,请参考以下文章