在 Big Oh 中寻找价值

Finding the values in Big Oh

我正在研究 here 中的渐近符号。我正在读这个 f(n) ≤ c g(n)

例如f(n) = 2n + 2,我们可以通过调整nc的值,以任何方式满足f(n) is O (c.g(n))。或者cn的取值有什么具体的规则或公式吗?不会一直是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).

我从你的问题中了解到,你没有理解大 O 表示法的本质。例如,如果您的复杂度是 O(n^2),那么您可以保证 n 有某个值(大于 k),之后 f(n) 在任何情况下都不会超过 c g(n)

让我们尝试证明 f(n) = 2n + 2O(n):

  1. 从函数本身看来,您不能像要查找f(n) ≤ c g(n) 那样将c 的值设置为等于2。如果插入 c = 2,则必须找到 k,使得 f(n) ≤ c g(n) 对应 n ≥ k。显然,2n ≥ 2n + 2 没有 n。所以,我们继续 c = 3.
  2. 现在,让我们求出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)等等。都是因为 ck 对应的值存在 g(n) = n^2g(n) = n^3g(n) = n^4

希望对您有所帮助。