对于上述2个大O,如果n>> m会发生什么。大O如何改变?在第一种情况下它是否变为O(n)。如果是,为什么?
答案 0 :(得分:5)
这取决于您对m
的最大值(取决于n
)的了解。
如果m
和n
都是独立变量O(mn)
是O(mn)
,则无法进一步简化。如果您知道m
永远不会超过n
,那么您也可以将其写为O(n^2)
。如果您知道m
永远不会超过log n
(满足n >> m
),O(mn)
可以写为O(n log n)
。
答案 1 :(得分:1)
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)。