无论a和b如何,都显示log n + bn = O(n log n)

时间:2013-09-18 14:44:15

标签: math big-o

我需要帮助理解Big-O问题。我已经得到了这个概念并且已经做了一些练习问题,但这个让我感到难过。

使用大O的定义,表明f(n)=anlogn+bnO(nlogn). (a, b > 0)

我不知道如何找到C或N,因为如果常数A或B改变,那么C和N也必须改变?或者我是以错误的方式看待这个?

我有一个测试,我想事先了解这一点。

谢谢!

3 个答案:

答案 0 :(得分:3)

当你收到像这样的声明时:

  

证明log n + bn = O(n log n)

您可以将其视为以下内容:

  

对于a和b的任何选择,证明log n + bn = O(n log n)

反过来意味着

  

对于a和b的任何选择,可以选择c和n 0 ,这样对于任何n≥n 0

换句话说,你首先选择a和b,然后显示log n + bn = O(n log n)。你不是试图证明有一个固定的c和n 0 在big-O符号的定义中起作用而不管a和b,但是应该表明无论有人如何选择a和b,你总能找到ac和n 0 - 这可能取决于a和b - 这样使用c的那些选项的log n + bn = O(n log n)和n 0

为了看看你在这个例子中是怎么做的,一个可能有用的观察是(假设我们的日志是基数为2),1≤logn只要n≥2。因此,只要我们限制如果n≥2,我们就得到了

  

log n +bn≤logn + bn log n =(a + b)n log n

鉴于此,你看到你如何选择c和n 0 ?我们限制n使得n≥2,所以选择n 0 = 2是有意义的。同样,因为我们刚刚证明了log n +bn≤(a + b)n log n,我们可以选择c = a + b。

您可以将此论点视为两个人之间的对话:

  • 其他人:我要选a和b,但我不会告诉你它们是什么。
  • :嗯,好的。
  • 其他人:所以我向我证明,当n≥n 0时,有一个n 0 和c,这样log n +bn≤cnlog n
  • :当然可以!尝试选择c = a + b和n 0 = 2.这有用吗?
  • 其他人:嘿,你说得对!这确实有效!

请注意,对话框从另一方选择a和b开始。这样,您可以定制您选择的c和n 0 以确保声明成立。如果你先尝试选择c和n 0 ,他们总能找到一个会破坏它的a和b。

希望这有帮助!

答案 1 :(得分:1)

由于AB是常量,因此可以用CN来表达AB。例如,您可能会证明C=A+BN > 2A足以证明f(n) = O(n lg n)

答案 2 :(得分:0)

也许我错过了一些东西,但这似乎不是Big-O的典型用法。您的函数是一个简单的数学函数,而不是算法。如果:

f(n)=anlog(n)+bn

然后复杂度是(anlog(n))和(bn)的复杂度,假设plus运算具有可忽略的复杂性。由于b是常数,(bn)是O(n),同样a是常数,(anlog(n))是O(nlog(n))。