O(mn)和O(mnlgn)

时间:2011-03-13 16:09:30

标签: algorithm big-o

对于上述2个大O,如果n>> m会发生什么。大O如何改变?在第一种情况下它是否变为O(n)。如果是,为什么?

3 个答案:

答案 0 :(得分:5)

这取决于您对m的最大值(取决于n)的了解。

如果mn都是独立变量O(mn)O(mn),则无法进一步简化。如果您知道m永远不会超过n,那么您也可以将其写为O(n^2)。如果您知道m永远不会超过log n(满足n >> m),O(mn)可以写为O(n log n)

答案 1 :(得分:1)

无论m和n的相对大小如何,

O(mnlgn)总是大于O(mn)。如果其中一个术语被认为是有界的或固定常数,您只会删除术语或简化。根据这些陈述,n和m是共同约束算法运行时的独立维度。除非其中一个具有有限的界限,否则它们都继续以大O符号表示。即使在这种情况下,如果比较不同算法的运行时界限,可能仍然有用的是留在有界维度m中,这些算法的复杂性可能相对于m而变化。

即使n>>,

O(mnlgn)和O(mn)也不会收敛。米它们总是以m为单位分开。如果m是可变且无界的,那么Big-O的规则要求它保持不变。

答案 2 :(得分:0)

当n>> m O(mnlgn)大于O(mn)时。通过假设n = 2 ^ x来求解。当n>> m时 O(mn)会收敛到O(n)。