Algorithm 算法中使用的O()符号

Algorithm 算法中使用的O()符号,algorithm,Algorithm,为什么我们不能写 2n=O(n^2) 而写作是可以的 2n=o(n^2) 关于O()和O()之间的区别,你能让我说清楚一点吗 我试着用萨哈尼的计算机算法来理解。 但我的疑问并不清楚小o表示法意味着上界渐近复杂度,它不能达到“最大渐近复杂度” 例如,7n^2在O(n^2)中,但不在O(n^2)中。如果我们使用集合术语,复杂性标记(O,O,ω,ω,θ)都是函数: o(f(n)) = O(f(n)) \ Theta(f(n)) 式中,θ是通常的大θ符号,在集合术语中由以下公式给出: Theta(f(

为什么我们不能写 2n=O(n^2) 而写作是可以的 2n=o(n^2) 关于O()和O()之间的区别,你能让我说清楚一点吗 我试着用萨哈尼的计算机算法来理解。
但我的疑问并不清楚

小o表示法意味着上界渐近复杂度,它不能达到“最大渐近复杂度”

例如,
7n^2
O(n^2)
中,但不在
O(n^2)
中。如果我们使用集合术语,复杂性标记(O,O,ω,ω,θ)都是函数:

o(f(n)) = O(f(n)) \ Theta(f(n))
式中,θ是通常的大θ符号,在集合术语中由以下公式给出:

Theta(f(n)) = O(f(n)) [intersection] Omega(f(n))
换句话说,
o(f(n))
包含
o(f(n))
中的所有函数,但不包含
Theta(f(n))



作为旁注,请注意,对于您的示例-
f(n)=2n
,它在
O(n^2)
O(n^2)
中都有,但仅在
O(n)
中,而不是在
O(n)
中, o表示法提供了最坏情况下所需的最大时间/空间的信息。 就像排序和从列表升序到降序一样

虽然O为您提供了所需的最小时间/空间信息,如已排序列表,但需要进行列表n比较才能知道列表已排序

你也可以说2n=O(n^2),没有问题。定义如下:

Big-O Notation : We say f(n) is O(g(n) iff There there exist positive constant c and n0 such that 0 <= f(n) <= c*g(n) for all n >= n0

Small-o Notation : We say f(n) is o(g(n)) iff For any positive constant c, there exists a constant n0 > 0 such that 0 <= f(n) < c*g(n)

Big-O表示法:我们说f(n)是O(g(n)当存在正常数c和n0时,使得0
2n
O(n^2)
中。计算机科学中有三种表示法用来描述渐近复杂性,即O表示法、θ表示法和ω表示法。2n是O(n^2),而不是θ(n^2)。