有时我看到Θ(n)中间有一个奇怪的Θ符号,有时只是O(n)。只是因为没人知道如何输入这个符号而懒惰打字,还是它有别的意思?
当前回答
是一种表示特殊情况的简写方式 O和是一样的。
因此,如果有人声称Theta是表达式q,那么他们也必然声称大O是表达式q, Omega是表达式q。
粗糙的类比:
如果: Theta说,那个动物有5条腿 然后是: 大O是正确的(“那个动物的腿少于或等于5条。”) 而且 Omega是正确的(“那个动物有超过或等于5条腿。”)
这只是一个粗略的类比,因为表达式不一定是特定的数字,而是不同数量级的函数,如log(n), n, n²,(等等)。
其他回答
图表可以让之前的答案更容易理解:
Θ-Notation -同阶| o符号-上限
在英语中,
在左边,注意有一个上界和下界,它们都是同一个数量级(即g(n))。忽略常数,如果上界和下界具有相同的数量级,我们可以有效地说f(n) = Θ(g(n))或者f(n)在大(g(n))。
从右边开始,一个更简单的例子,它说上限g(n)只是一个数量级,忽略了常数c(就像所有大O符号一样)。
有一种简单的方法(我猜是一种技巧)来记住哪个符号意味着什么。
所有的大o符号都可以被认为有一个条形。
当查看Ω时,条在底部,所以它是一个(渐近的)下界。
在看Θ的时候,条显然是在中间。所以这是一个(渐近的)紧边界。
当书写O字时,你通常在顶部完成,然后画一圈。因此O(n)是函数的上界。公平地说,这个方法不适用于大多数字体,但它是名称的最初理由。
是一种表示特殊情况的简写方式 O和是一样的。
因此,如果有人声称Theta是表达式q,那么他们也必然声称大O是表达式q, Omega是表达式q。
粗糙的类比:
如果: Theta说,那个动物有5条腿 然后是: 大O是正确的(“那个动物的腿少于或等于5条。”) 而且 Omega是正确的(“那个动物有超过或等于5条腿。”)
这只是一个粗略的类比,因为表达式不一定是特定的数字,而是不同数量级的函数,如log(n), n, n²,(等等)。
f(n)<=k*n时,如果正k存在,则f(n)属于O(n)
当k1*n<= F (n)<=k2*n时,F (n)属于Θ(n)
维基百科上关于大O符号的文章
Conclusion: we regard big O, big θ and big Ω as the same thing. Why? I will tell the reason below: Firstly, I will clarify one wrong statement, some people think that we just care the worst time complexity, so we always use big O instead of big θ. I will say this man is bullshitting. Upper and lower bound are used to describe one function, not used to describe the time complexity. The worst time function has its upper and lower bound; the best time function has its upper and lower bound too. In order to explain clearly the relation between big O and big θ, I will explain the relation between big O and small o first. From the definition, we can easily know that small o is a subset of big O. For example:
T (n) = n ^ 2 + n,我们可以说T (n) = O (n ^ 2)、T (n) = O (n ^ 3)、T (n) = O (n ^ 4)。但对于小o, T(n)=o(n²)不符合小o的定义,所以T(n)=o(n³),T(n)=o(n²)对小o是正确的,多余的T(n)=o(n²)是什么?太大了θ!
一般来说,我们说大O是O(n²)而不是T(n)=O(n³)T(n)=O(n²)为什么?因为我们潜意识里把大O看成大θ。 同样,我们也在潜意识中将大Ω视为大θ。 总而言之,大O、大θ和大Ω从定义上看是不同的,但在我们的口中和大脑中却是一样的。