Algorithm 为什么算法复杂度用大O表示法而不是θ表示?

Algorithm 为什么算法复杂度用大O表示法而不是θ表示?,algorithm,time-complexity,big-o,Algorithm,Time Complexity,Big O,我知道大O、θ和ω符号是什么,但例如,如果我的算法是a for内的a for,循环n次,我的复杂度将是O(n²),但为什么是O(n²)而不是ϴ(n²)?由于复杂性实际上是O(n²)和Ω(n²),那么它也将是ϴ(n²),我看不出有任何理由不使用ϴ(n²)而不是O(n²),因为ϴ(n²)用上限和下限值限制我的复杂性,而不仅仅是在O(n²)的情况下用上限值。如果f(n)=Θ(g(n))那么f(n)=O(g(n))。这是因为Θ(g(n))⊆ O(g(n)) 在您的特定情况下,如果一个循环正好在时间上运行

我知道大O、θ和ω符号是什么,但例如,如果我的算法是a for内的a for,循环n次,我的复杂度将是O(n²),但为什么是O(n²)而不是ϴ(n²)?由于复杂性实际上是O(n²)和Ω(n²),那么它也将是ϴ(n²),我看不出有任何理由不使用ϴ(n²)而不是O(n²),因为ϴ(n²)用上限和下限值限制我的复杂性,而不仅仅是在O(n²)的情况下用上限值。

如果
f(n)=Θ(g(n))
那么
f(n)=O(g(n))
。这是因为
Θ(g(n))⊆ O(g(n))

在您的特定情况下,如果一个循环正好在时间上运行,则时间复杂度既为O(n^2)又为Θ(n^2) big-O通常足够的主要原因是,在分析算法性能时,我们对最坏情况的时间复杂度更感兴趣,而了解最坏情况通常就足够了。
此外,并非总是能够找到一个紧密的界限。

我投票以基于意见的方式结束。我真的在问为什么会这样,我真的不知道,也希望知道为什么人们不使用θ而不是大O。我是一名计算机科学学生,因为我们有在线课程,所以没有我的教授,我真的很想知道…不是每个问题都有一个已知的下限,用上限作为“最坏情况”更方便。在计算复杂性理论中,他们专注于对比嵌套for循环更复杂的问题进行分类,解决问题的一种方法是证明问题a至少和问题B一样难,给出下限,反之亦然。有时上界和下界也不一样。你能给我一个没有下界的问题的例子吗?我想不出一个。另外,如果在我的(简单)复杂度中没有使用O(),而是开始使用ϴ(),那么我会错吗?因为如果我的算法复杂度有一个下限的话,技术上会更精确。不,你不能使用
ϴ
而不是
O
。这也是另一位用户在评论中说的,谢谢!