2012-08-07 86 views
2

我想知道如何在斯特拉森算法中进行递归调用,以及它们究竟需要什么。斯特拉森算法中的递归

我知道7个乘法器比8个我们会有更多的效率,但我很困惑这些乘法器是如何递归计算的。特别是,如果我们遵循分而治之的范式,那么矩阵的哪一部分就是我们“划分”的,我们如何去做这件事,直到我们得到一个基本案例,我们可以分别征服递归部分。

谢谢!

+1

斯特拉森对于O(n <100)并不值得,并且你失去了稳定性。所有这些都在维基百科文章中详细说明,但除非您需要将它用于uni任务,否则您可以使用库。维基百科文章确实包含完整的C语言源代码。 – 2012-08-07 03:58:07

+0

七次乘法中的每一次都是使用strassen再次完成的。 – Fakrudeen 2012-08-07 06:03:41

回答

4

我们在计算这7个乘数时进行递归调用。首先我们将矩阵的大小扩展到2的幂次,然后在每一步我们将每个矩阵分成4块。

2

我们将A和B均匀划分为四分之一或十六分之六十四等,以便将它们减少到2×2矩阵。斯特拉森的方法只能应用于2^n x 2^n类型的矩阵。

对于矩阵而不是类型2^n x 2^n您可以将零点填充到满足要求。