algorithm - 矩阵乘法的时间复杂度

标签 algorithm time-complexity matrix-multiplication

我很难理解时间复杂度。人们可以看算法,直接说它的时间复杂度是多少,但我做不到。

考虑两个 n * n 矩阵(AB)。它们的乘法结果是C。 因此,C11 的值由 n 次乘法和 n-1 次加法组成。为什么它的时间复杂度是O(n^3)?我会说 O(n^2)

谁能用通俗易懂的语言解释一下?我知道什么是 theta,我知道什么是大 O,但我就是无法实现这些东西。

如果您提供另一个与上述类似的简单示例,我们将不胜感激。

最佳答案

简单地说,您的矩阵 C 有 n x n 个单元格,这需要对所有单元格进行 n^2 操作。单独计算每个单元格(如 c11)需要 n 操作。所以这总共需要 O(n^3) 时间复杂度。

你说在 C 中计算一个单元格(如 c11)需要 n^2 是不正确的。计算 c11 需要从 1 循环到 n(将其写在纸上,您会看到),这是 O(n) 时间复杂度。

熟能生巧。只要尝试更多的问题,你就会很擅长。此外,Facebook 有一个名为 codelab 的面试准备工具。为您改进那些相关的东西。

希望这对您有所帮助!

关于algorithm - 矩阵乘法的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46821492/

相关文章:

algorithm - 找到奇数度顶点最少的图的生成树

仅使用加法、除法和乘法以固定数量的步骤达到数字的算法

java - Java Collections.sort(nodes) 使用什么类型?

c++ - 为什么在树中插入顺序元素比在树中插入随机元素需要更多时间?

使用 OpenMP 进行稀疏矩阵乘法缓存管理

algorithm - 代码补全如何工作?

java - 这种获取排序列表中最接近数字的方法是否最有效?

c++ - 快速排序奇怪的时间复杂度,C++

C++ 矩阵乘法自动向量化

matlab - 在matlab中生成具有一般维数的网格