函数f(n)的复杂度是多少,其中n = f(n).log(f(n))

时间:2015-02-12 07:23:12

标签: algorithm math big-o complexity-theory logarithm

函数f(n)的复杂度是多少,优选Big-O表示法,并且f(n)满足条件n = f(n).log(f(n)),f(n)> 1.假设登录基数为2。

我试图将f(n)与条件隔离但无法完成。 使用excel获取函数f(n)的图形。 似乎f(n)= O(n ^ 2)但我无法弄清楚如何把它弄出来?

2 个答案:

答案 0 :(得分:1)

我认为复杂性甚至低于O(n) - 即O(n/ln(n))。半证明:

(用n / ln(n)代替f(n))

RHS = n/ln(n) * ln(n/ln(n)) = n/ln(n) * (ln(n) -ln(ln(n))) = = n - n * ln(ln(n))/ln(n) = n * (1-ln(ln(n))/ln(n)) = n*Theta(1) = Theta(n) = LHS

为清楚起见,我几乎无处不在地跳过Theta符号。

答案 1 :(得分:0)

评论越来越长,所以这里有一个证明你的证明。这可能是家庭作业,所以请确保你学到一些东西,而不是仅仅将其复制下来。

为了表明f是O(n),你必须证明存在M和n1,其中f(n)< M | N |对于所有n&gt; N1。

我们知道n = f(n)log(f(n)),所以M | n | = M | f(n)| |日志(F(N))|。

所以我们试图找到的是M和n1

  f(n) < M |n| = M |f(n)| |log(f(n))|

表示n> N1。

n,f和log f都是正数,因此我们可以删除|。|得到

  f(n) < M f(n) log(f(n)) = M |n|

我们的目标是找到一个M和n1

  f(n) < M f(n) log(f(n)) = M |n|

适用于所有n&gt; N1。选择M = 1,n1 = 10,然后

  f(n) < f(n) log(f(10)) <= f(n) log(f(n)) = |n|  (where M is now set to 1)

表示n> N1。 f(n)log(f(10))&lt; = f(n)log(f(n))为真,因为log(f(n))对于n> n1是单调的(作业练习:表明这是真的)。 f(n)&lt; f(n)log(f(10))通常是真的,因为log(f(10))> 1。

这表明f(n)是O(n)。