简单的问题。使用 m x n 矩阵,我正在做一些 O(mn) 操作。我的问题是 O(mn) 是否在 O(n^2) 中。看着大O上的维基百科,我会这么认为,但我在复杂性方面一直很糟糕,所以我希望有人能澄清一下。
O(mn) 表示m x n
矩阵意味着您正在对矩阵的每个值执行恒定的工作。
O(n^2) 表示,对于每一列,您正在执行 O(# 列)的工作。请注意,此运行时随着行数 # 而略有增加。
所以,最后,这是一个m
是否大于n
的问题。 如果 m>> n,则 O(n^2) 更快。 如果 m <<n,O(mn) 更快。
如果m
是O(n),m * n
是O(n2)。
我假设对于矩阵,您可能会有 m
= O(n),这是列数,而n
是行数。所以m * n
= O(n2)。但是谁知道你的矩阵会有多少列。
这完全取决于m
有什么界限。
看看O(n)的定义。