我对Big O Notation有疑问 等式
f(n)=3n+8
我们如何找到上限以及如何找到大O符号 给出的解决方案是
3n+8<=4n
和n>8
,其中c=4
和n_0=8
我不确定这个解决方案是如何找到的。你能解释一下如何达成这个解决方案吗?
答案 0 :(得分:3)
来自CLRS的Big-Oh表示法的数学定义:
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
的值大于或等于{{1}时,此表达式才会成立}}。如果不是这种情况,那么这种线性不等式将会失败。例如:
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
。
This是一个很好的资源。