【发布时间】:2015-09-29 21:51:01
【问题描述】:
两个问题:
首先,如果 f(n) = n(3n + nlog(n)) 那么为什么 f(n) 是 Ω(n2)?
第二,为什么n2log(n)不是O(n2)?
【问题讨论】:
-
我对我的答案进行了编辑。我错误地总结了你问题的第一部分。现在已经更正了。
两个问题:
首先,如果 f(n) = n(3n + nlog(n)) 那么为什么 f(n) 是 Ω(n2)?
第二,为什么n2log(n)不是O(n2)?
【问题讨论】:
这些都是 log(n) 趋于无穷大这一事实的结果,因为 n 趋于无穷大。
1) n(3n + nlog(n)) 是 omega(n^2) 因为对于大的 n 3n 可以忽略不计,并且 n^2log(n) 以 n^2 为界
2) n^2log(n) 是 not O(n^2) 因为,对于任何常数 K > 0,对于任何 n > e^K 你有 n^2log(n ) > Kn^2,所以没有 K 满足 n^2log(n)
【讨论】:
Ω( ) 用于将边界置于函数之下。这意味着该函数的运行时间复杂度至少比 Ω( ) 中括号内提到的要高。现在,对于函数f(n) = n(3n + nlog(n)),在涉及的两个函数(3n2 和 n2Log( n)) 是 n2Log(n)。
因此,任何小于支配函数的函数都可以作为下界,即使它可能不是最严格的下界。所以,f(n) 是 Ω(n2)。
接下来,n2Log(n) 的增长率高于 n2(正如我上面已经提到的那样,哪个占主导地位)。因此,n2Log(n) 是关于 f(n) 的 Big - O 的更紧密的界限(因此是更好的行列式)。因此,f(n) 是 O(n2Log(n)) 而不是 O(n2)。
【讨论】: