f(n)= I * Log(I)的Sigma,其中I = 1到Log(n),等于什么?

时间:2012-03-27 09:58:02

标签: algorithm complexity-theory

我正在尝试计算以下内容:

f(n) = ∑ (i*log(i))  , when i=1 to log(n) . 

我该怎么做?

我成功了:

f(n) = ∑ (i*log(i))  , when i=1 to n . 

这是:1*log(1) + 2*log(2) + ... + n*log(n) <= n(n*log(n))

最后的位置:f(n) = ∑ (i*log(i)) = Ω(n^2 log^2(n) )Where i=1 to n

但是我不知道如何做第一个,任何想法?

此致

4 个答案:

答案 0 :(得分:1)

首先,您必须从当前结果中的^2中删除log^2(n)

f(n) = ∑ (i*log(i)) <= n(n*log(n)) = Ω(n^2*log(n))

然后,对于i1转到log(n)的情况,只需将n替换为log(n)

让我们来定义

g(n) = ∑ (i*log(i)), when i=1 to log(n) // The result you are looking for
f(n) = ∑ (i*log(i)), when i=1 to n // The result we have

然后

g(n) = f(log(n)) = Ω(log(n)^2*log(log(n)))

答案 1 :(得分:1)

f(n)= Theta(log 2 (n)* log(log(n))

证明:

f(n) = 1 * log(1) + 2 * log(2) + ... + log(n) * log(log(n)) <= 
<= log(n)*log(log(n)) * log(n) =
= O(log^2(n) * loglog(n))

f(n) = 1 * log(1) + 2 * log(2) + ... + log(n) * log(log(n)) >= 
>= log(n/2) * log(log(n/2)) + log(n/2 + 1) * log(log(n/2 + 1) + ... + log(n) * log(log(n)) >= 
>= log(n/2) * log(log(n/2)) + ... + log(n/2) * log(log(n/2)) = 
= log(n/2) * log(log(n/2)) * log(n/2)
= log^2(n/2)*log(log(n/2)) = log^2(n/2)*log(log(n)-log(2)) = 
= Omega(log^2(n)*loglog(n))

答案 2 :(得分:1)

如果您了解某些微积分,您通常可以通过积分找到此类总和的增长顺序。

如果f是正单调函数,则∑ f(i)的{​​{1}}可以用积分1 <= i <= k∫ f(t) dt近似,范围从1到{{1} }})。因此,如果您知道t的原始函数k(在现代用语中是 antiderivative ),您可以轻松地评估F的积分。对于增长分析,常数项f无关紧要,因此您只需F(k) - F(1)即可近似求和(以及积分)。

在此类计算中经常使用的工具是部分集成

F(1)

遵循产品规则 F(k)。将b b ∫ f'(t)*g(t) dt = f(b)*g(b) - f(a)*g(a) - ∫ f(t)*g'(t) dt a a 写为(f*g)' = f' * g + f * g'以便应用部分积分通常很有帮助,例如找到(自然)对数的原语,

f

在这种情况下,使用1*f,部分积分产生

∫ log t dt = ∫ 1*log t dt = t*log t - ∫ t * (log t)' dt = t*log t - ∫ t*(1/t) dt = t*log t - t

由于第二个词比第一个词增长慢,因此可以忽略增长分析,所以你得到

f(t) = t*log t

由于不同基数的对数仅因常数因子而不同,因此不同的对数选择只会改变常数因子,您可以在所有情况下看到

∫ t*log t dt = 1/2*t^2 * log t - ∫ (1/2*t^2) * (log t)' dt
             = 1/2*t^2 * log t - 1/2 ∫ t^2*(1/t) dt 
             = 1/2*t^2 * log t - 1/4*t^2

针对您的具体问题k ∑ i*log i ≈ 1/2*k^2*log k 1 ,所以总和为k ∑ i*log i ∈ Θ(k^2 * log k) 1 ,这是由其他答案以不同方式得出的。

答案 3 :(得分:0)

http://img196.imageshack.us/img196/7012/5f1ff74e3e6e4a72bbd5483.png 现在为logn替换n,你会得到它非常严格地受log ^ 2(n)* log(log(n))

的限制