大O符号的数据结构
问题描述:
答
数学定义:
O(g(n)) = { f(n) : there exists positive constants c and n_0 such that 0 <= f(n) <= c.g(n) for all n >= n_0 }
让f(n)=3n+8
。
然后,我们必须找到正的常数c
和n_0
,使得0 <= 3n+8 <= c.g(n) for all n >= n_0
。
让g(n)=n
。 (如果你愿意,可以试试各种功能)
然后,0 <= 3n+8 <= cn for all n >= n_0
。只有当c
的值大于3
和n
值大于或等于8
这个表达式将保持为真。如果情况并非如此,那么这种线性不等式将失败。例如:
- 如果
c = 3
,那么我们将得到0 <= 3n+8 <= 3n
这是错误的。 - 如果
c = 4
和n_0 = 7
,那么我们将得到0 <= 3n+8 <= 4n
,这意味着0 <= 3.7+8 <= 4.7
,它给出0 <= 29 <= 28
,这又是错误的。
因此,我们可以得出结论f(n) = O(n) for c = 4 and n_0 = 8
。
This是一个很好的资源,如果你想了解更多。
另外请注意,任何高于'3'的值也可以。例如,使用'{c = 3.5,n = 16}','{c = 3.1,n = 80}','{c = 3.001,n = 8000}等。 – user1952500