大O计算

时间:2014-10-12 17:04:09

标签: time-complexity big-o

我在研究Big O符号。我知道Big O表示为:

f(n)E O(g(n))或f(n)= O(g(n))

这意味着函数f(n)的增长率不大于g(n)。

现在让我说我有一个等式:

5n +2 E O(n)

通过上面的等式,不应该' n'等于g(n)和' 5n + 2'等于f(n)。 现在为n的任何值。 f(n)总是大于g(n)。那么在这种情况下Big O是如何真实的呢?

3 个答案:

答案 0 :(得分:2)

你应该更详细地阅读Big Oh的概念。

关系

f(n) E O(g(n)) 

对于某些常数C

f(n) <= C * g(n)

在这种情况下,C是某个值,其中5n + 2总是小于Cn

如果你解决了它:

5n + 2 <= Cn

2 <= (C - 5)*n

由此可以很容易地发现,如果C = 6 然后对于n的任何值,你的等式总是成立!

希望这有帮助!

答案 1 :(得分:2)

这不是大O符号的正确定义。 If f(x) is O(g(x)),那么必须存在一些常量C和N,以便:|f(x)| <= C |g(x)| for all x>Nf(x) is O(g(n))。因此,如果f(x)在某个x值N之后总是小于或等于某个常数* g(x),那么f(n)=5n+2 <= C*g(n)=10000n。实际上,这意味着常数因素是无关紧要的,因为您可以选择C作为任何值。因此,对于您的示例f(n) is O(g(n)),{{1}}。

答案 2 :(得分:0)

考虑Big-O表示法代表什么,你有声明

5n + 2 E O(n)

或者也是 5n +2 = O(n)

鉴于Big-O符号表示我们函数的上限,即为我们给定函数的可能结果建立上限,可以通过以下方式重新考虑问题:

5n +2&lt; = c * n,某些常数c

我们可以看到该陈述是正确的,因为有可能找到一个大于或等于我们函数的常量(使得该常量大小或我们需要的小)。

更一般地说,如果g(n)的更大,我们可以说任何给定函数f(n)都属于O(g(n))等于或等于f(n),即其术语中的最高等级。

形式上: 设f(n)= n ^ x; 设g(n)= n ^ y;所以x <= y

然后f(n)= O(g(n))。

同样适用于Big-Omega的另一种方式。 希望它适合你