我最近遇到了一些渐近符号,当这个问题出现时是50 n logn并且通过流行的规则得到Big-OH表示法只是简单地删除常量和低阶项。但是50n logn也是N ^ 5的BIG-OH。 那么为什么Big-oh符号更好地考虑O(nlogn)而不是O(n ^ 5)。
答案 0 :(得分:8)
当你说50.n.log(n) = O(n^5)
时,你是完全正确的。这在数学上没有问题。我们可以找到一个常数C = 1
,以便对于高于某个值n
的所有10
,我们有
|50.n.log(n)| < C.|n^5|
请参阅维基百科了解formal definition
毫无疑问。
如果我们更愿意说50.n.log(n) = O(n.log(n))
是因为我们经常想知道什么是最慢的增长函数,它决定了算法的复杂性。这通常用于比较算法的复杂性。
答案 1 :(得分:4)
50n log n
不是字面O(n log n)
,也不是O(n^5)
。
50n log n
是一个功能。
O(n log n)
和O(n log n)
都是函数类,因此50n log n
不能&#34;是&#34;任
50n log n
是两个类的成员。根据定义,O(g(n))
包含所有函数f(n)
,因此对于某些常量∀n > N: f(n) < Mg(n)
和M
N
。这是(令人困惑地)写成f(n) = O(g(n))
。 Big O表示法描述函数增长的上限。
Big-O系列符号中的两个类似函数类别是Θ(n log n)
和Θ(n^5)
(即大写希腊语字母Theta)。这些类小于相应的O
类。 50n log n
属于第一个,但不属于第二个。 Big Theta表示法描述了紧密的双边界:f(n) = Θ(g(n))
表示f(n)
增长不快,不慢于g(n)
(达到某个常数因子)。< / p>