我有一个这个顺序的算法: O((m ^ 2)/ n)+ O(mn)
我想知道:它等于 O(mn)?
O((m ^ 2)/ n)> O(mn) OR O((m ^ 2)/ n)< O(mn) ???
答案 0 :(得分:11)
您应该说复杂性为O(m^2/n + mn)
。
让我们看看它们何时相等:
(m^2)/n = mn
m^2 = m(n^2)
m = n^2
所以,如果m = n^2
,他们是平等的,
当m > n^2
,m^2/n
占主导地位时,
当m < n^2
时,mn
占主导地位。
因此,两者都不会比另一个更大,因此我们也无法取消。
答案 1 :(得分:0)
从尺寸上讲,它们无法进行比较。如果m和n的单位相同,则说UNIT
但是(m ^ 2)/ n是在UNIT中测量的,而mn是在UNIT ^ 2或UNIT-Squared中测量的。
(m^2)/n < mn
如果您选择m = n
,则m^2/n
将为n
。
这意味着m和n的顺序相同(或相同),复杂度为O(mn)
。
如果m和n的顺序不同,
if m^2 < n, then it will be O(mn)
if m^2 > n, then it will be O(m^2/n)