函数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)但我无法弄清楚如何把它弄出来?
答案 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)。