在 Big Oh 中寻找价值
Finding the values in Big Oh
我正在研究 here 中的渐近符号。我正在读这个 f(n) ≤ c g(n)
例如f(n) = 2n + 2,我们可以通过调整n
和c
的值,以任何方式满足f(n) is O (c.g(n))
。或者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).
我从你的问题中了解到,你没有理解大 O 表示法的本质。例如,如果您的复杂度是 O(n^2)
,那么您可以保证 n 有某个值(大于 k),之后 f(n)
在任何情况下都不会超过 c g(n)
。
让我们尝试证明 f(n) = 2n + 2
是 O(n)
:
- 从函数本身看来,您不能像要查找
f(n) ≤ c g(n)
那样将c
的值设置为等于2
。如果插入 c = 2
,则必须找到 k
,使得 f(n) ≤ c g(n)
对应 n ≥ k
。显然,2n ≥ 2n + 2
没有 n
。所以,我们继续 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
。
希望对您有所帮助。
我正在研究 here 中的渐近符号。我正在读这个 f(n) ≤ c g(n)
例如f(n) = 2n + 2,我们可以通过调整n
和c
的值,以任何方式满足f(n) is O (c.g(n))
。或者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).
我从你的问题中了解到,你没有理解大 O 表示法的本质。例如,如果您的复杂度是 O(n^2)
,那么您可以保证 n 有某个值(大于 k),之后 f(n)
在任何情况下都不会超过 c g(n)
。
让我们尝试证明 f(n) = 2n + 2
是 O(n)
:
- 从函数本身看来,您不能像要查找
f(n) ≤ c g(n)
那样将c
的值设置为等于2
。如果插入c = 2
,则必须找到k
,使得f(n) ≤ c g(n)
对应n ≥ k
。显然,2n ≥ 2n + 2
没有n
。所以,我们继续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
。
希望对您有所帮助。