algorithm - 寻找 Big Oh 的值(value)

标签 algorithm optimization time-complexity big-o complexity-theory

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

例如,如果f(n) = 2n + 2,我们可以通过调整的值以任何方式满足它,因为f(n)是O(c.g(n)) >nc。或者c和n的取值有没有具体的规则或公式。 no 永远是 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)。

enter image description here

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

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

  1. 从函数本身看来,您无法设置 c 的值等于 2如您所愿 f(n) ≤ c g(n) 。如果您插入 c = 2 ,你必须找到k这样f(n) ≤ c g(n)对于 n ≥ k 。显然,没有 n其中2n ≥ 2n + 2 。所以,我们继续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)等等。都是因为 c 的对应值和k存在于g(n) = n^2 , g(n) = n^3g(n) = n^4 .

希望有帮助。

关于algorithm - 寻找 Big Oh 的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755831/

相关文章:

java - 将 "new map"结果绑定(bind)到 Hibernate 中的对象

c++ - 您可以在 C++ 中缓存虚函数查找吗?

javascript - V8 中 Javascript 方法的时间复杂度

algorithm - 生成所有唯一的有向图,每个节点有 2 个输入

c# - 我该如何缩短 If else

php - 优化PHP/mysql算法

algorithm - 是斐波那契数列伪多项式的迭代解吗?

python - 简单Python程序的时间复杂度

c# - 使用 Task 并行计算递归算法

java - 确定数组中最常见的事件