【问题标题】:Why is the recursive step in the divide and conquer matrix multiplication algorithm 8T(n/2) instead of 8T(n/4)为什么分治矩阵乘法算法中的递归步骤是8T(n/2)而不是8T(n/4)
【发布时间】: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 行和列。子矩阵中的条目数是原始条目数的四分之一,但行数或列数是原始数的一半。 (我假设 nN 是同一个数字。)
  • 啊哈,你是先生!

标签: algorithm matrix matrix-multiplication


【解决方案1】:

斯文·马纳赫的回答:

似乎 n 是矩阵的行数和列数。这 子矩阵有 n / 2 行和列。中的条目数 子矩阵是原始条目数的四分之一,但 行数或列数是原始数的一半。 (n 和 N 是 相同的数字。)

【讨论】:

    猜你喜欢
    • 2020-04-11
    • 2017-07-16
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2019-05-15
    • 2011-06-18
    • 2011-02-16
    相关资源
    最近更新 更多