在这种情况下,我对大o的解释是否正确?

时间:2016-09-29 18:51:38

标签: algorithm math big-o asymptotic-complexity

我试图向我的朋友解释为什么 7n - 2 = O(N)。我想根据big O的定义这样做。

根据大O的定义, f(n)= O(g(n))如果:

我们可以找到实数值 C 和整数值 n0> = 1 ,以便:

  • f(n)< = C 。 g(n)表示 n> = n0 的所有值。

在这种情况下,以下说明是否正确?

  • 7n - 2< = C 。 Ñ

  • -2< = C 。 n - 7n

  • -2< = n( C - 7)

  • -2 /( C - 7)< = n

如果我们在数学上考虑 C = 7 -2 /( C - 7 )等于负无穷大,所以

  • n> =(负无穷大)

这意味着对于 n> =(负无穷大)的所有值,以下成立:

  • 7n - 2< = 7n

现在我们必须选择 n0 ,这样对于所有 n&gt; = n0 n0&gt; = 1 ,以下内容成立:< / p>

  • 7n - 2&lt; = 7n

因为对于 n&gt; =(负无穷大)的所有值,不等式成立,我们可以简单地取 n0 = 1

1 个答案:

答案 0 :(得分:1)

你在这里走在正确的轨道上。但是,从根本上说,你使用的逻辑不起作用。如果你试图证明存在n 0 和c使得所有n≥n 0 的f(n)≤cg(n),那么你可以'首先假设f(n)≤cg(n),因为这最终是你要证明的!

相反,看看你是否可以从初始表达式(7n - 2)开始并将其按到cn上限的东西。这是一种方法:从7n - 2≤7n开始,我们可以(通过检查)选择n 0 = 0和c = 7来查看所有n≥n的7n - 2≤cn <子> 0

对于一个更有趣的案例,让我们试试7n + 2:

  

7n + 2

     

≤7n+ 2n(对于所有n≥1)

     

= 9n

因此通过检查,我们可以选择c = 9和n 0 = 1,并且对于所有n≥n 0 我们有7n +2≤cn,所以7n + 2 = O(n)。

请注意,在这个数学中没有任何一点我们假设最终的不等式,这意味着我们永远不必冒着被零除错误的风险。