【发布时间】:2017-02-02 20:25:13
【问题描述】:
D&C 矩阵乘法算法 C = A * B 假设 A 和 B 是 NxN 矩阵,其中 N 是 2 的幂。问题分为答案 C 的四分之一矩阵的四分之一矩阵乘法。
C11 C12 A11 A12 B11 B12
C21 C22 = A21 A22 * B21 B22
递归算法中的划分步骤是这样的
C11 = SMMR(A11, B11) + SMMR(A12, B21)
C12 = SMMR(A11, B12) + SMMR(A12, B22)
C21 = SMMR(A21, B11) + SMMR(A22, B21)
C22 = SMMR(A21, B12) + SMMR(A22, B22)
分析将此解释为,每个递归调用乘以两个 N/2 x N/2 矩阵。有 8 个调用,所以 8T(n/2)。
我的问题是,为什么这不是 8T(n/4) ?我看到 8 次调用问题的大小是原始问题的 1/4。
分析的其余部分表明,加法最终是我理解的 theta(n^2),时间复杂度显示为 T(n) = 8T(n/2) + theta(n^2)
【问题讨论】:
-
似乎 n 是矩阵的行数和列数。子矩阵有 n /2 行和列。子矩阵中的条目数是原始条目数的四分之一,但行数或列数是原始数的一半。 (我假设 n 和 N 是同一个数字。)
-
啊哈,你是先生!
标签: algorithm matrix matrix-multiplication