【发布时间】:2018-03-30 23:53:37
【问题描述】:
我很难理解时间复杂度。人们可以看算法,直接说出它的时间复杂度是多少,但我做不到。
考虑两个n * n 矩阵(A 和B)。他们的乘法结果是C。
因此,C11 的值由 n 次乘法和 n-1 次加法组成。为什么它的时间复杂度是O(n^3)?我会说O(n^2)。
谁能用通俗易懂的语言解释一下?我知道什么是 theta ,我知道什么是大 O,但我就是无法实现这些东西。
如果您提供另一个与上述类似的简单示例,我们将不胜感激。
【问题讨论】:
-
从广义上讲,你有 2 个
fors来遍历你需要计算的所有 C 单元格,还有 1 个for来进行计算 -> 3fors->O(n³) -
第一个 FOR:遍历 A 行,第二个 FOR:遍历 B 列,第三个 FOR 添加,对吗?你怎么理解它,在飞行中?或者您必须快速编写该算法才能看到这种复杂性?
-
实际上,您不必将代码可视化才能看到其复杂性。如果您熟记于心,就无法在脑海中想象它。查看this SO answer with a java matrix multiplication 并查看 3 个 for 循环
标签: algorithm time-complexity matrix-multiplication