【问题标题】:Find the single wrong element in matrix product?在矩阵乘积中找到一个错误的元素?
【发布时间】:2014-10-19 17:59:25
【问题描述】:

给出了三个 N*N 矩阵 A,B,C。 C 与 A 和 B 的乘积相同,只是只有一个元素是错误的。找到它的简单算法需要 N^3 时间。我们可以做得比这更快吗?

【问题讨论】:

    标签: algorithm matrix matrix-multiplication


    【解决方案1】:

    取一个向量v = (1 1 1 1 ... 1)<sup>T</sup>,并计算:u = Cv - A(Bv)

    u 等于 (C-AB)v,因此它在除 1 之外的所有元素中都为零。此元素的索引对应于 C 与 AB 不同的行索引。元素(a)的值是C-AB中非零元素的值。

    要查找列索引,您可以使用向量v<sub>2</sub> = (1 2 3 4 ... n)<sup>T</sup> 重复此操作。现在非零元素的值为ac,其中a是我们之前计算的值,c是列索引。

    由于我们只进行了几次矩阵*向量乘法,因此运行时间为 O(n^2)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 2019-04-21
      • 2017-02-23
      • 1970-01-01
      相关资源
      最近更新 更多