为什么在方阵乘法的递归中输入大小除以2而不是4?

时间:2017-10-23 17:49:03

标签: algorithm recursion matrix-multiplication divide-and-conquer

在分析方阵乘法运行时时,我知道运行时是

T(N) = 8T(N/2) + O(N^2)

用于天真的分而治之的方法,

T(N) = 7T(N/2) + O(N^2)

对于Strassen的方法。

为什么N除以2而不是4?

我如何理解,T(N/2)的系数(8为幼稚,7为斯特拉森)是每个级别引入的递归次数,或子问题的增长率。除数是减少问题的因素。 O(N^2)加数是每个特定重复节点的运行时。

如果朴素算法和Strassen方法都将输出矩阵划分为N/2 x N/2矩阵,其中N是行数和列数,则问题不会减少4倍,不是2,因为在每个级别我们都在解决4个较小矩阵的问题?

下面是我从GeeksforGeeks获得的天真方法的图像:

Naive method image

1 个答案:

答案 0 :(得分:1)

Introduction to Algorithms, 3rd Edition,第p。 77:

  

让T(n)是使用此[朴素矩阵乘法]过程将两个n x n矩阵相乘的时间。

n不是任何一个矩阵中元素的数量,而是一个维。因此,由于矩阵 dimensions 被递归地分为两半,因此除数为2,而不是4。