我正在经历here中的渐近符号。我正在阅读此f(n) ≤ c g(n)
例如,如果f(n)= 2n + 2,我们可以通过调整f(n) is O (c.g(n))
和n
的值以任何方式满足c
的要求。或者是否存在用于选择c
和n
的值的特定规则或公式。不会总是1吗?
本身没有公式。您可以在此处找到正式定义:
f(n) = O(g(n)) means there are positive constants c and k,such that 0 ≤ f(n) ≤ cg(n) for all n ≥ k. The values of c and k must be fixed for the function f and must not depend on n.
(big-O notation)。
我从您的问题中了解到的是,您没有获得big-O表示法的本质。例如,如果您的复杂度为O(n^2)
,则可以保证存在某个n值(大于k),之后f(n)
在任何情况下都不会超过c g(n)
。>
让我们尝试证明f(n) = 2n + 2
是O(n)
:
c
,因此无法将2
的值设置为等于f(n) ≤ c g(n)
。如果插入c = 2
,则必须找到k
,以f(n) ≤ c g(n)
代表n ≥ k
。显然,n
没有2n ≥ 2n + 2
。因此,我们进入c = 3
。现在,让我们找到k
的值。因此,我们求解方程3n ≥ 2n + 2
。解决方法:
3n ≥ 2n + 2
=> 3n - 2n ≥ 2
=> n ≥ 2
因此,对于c = 3
,我们发现k = 2
的值(n≥k)。
您还必须了解,您的功能不只是O(n)
。也是O(n^2),O(n^3),O(n^4)
,依此类推。都是因为c
,k
和g(n) = n^2
存在g(n) = n^3
和g(n) = n^4
的对应值。
希望有帮助。