运行时间与日志总和成比例的算法的时间复杂度

时间:2017-08-06 06:40:40

标签: algorithm time-complexity

我的算法的运行时间与log(1) + log(2) + ... + log(N)成正比。显然,该算法在O(N log(N))时间内运行。但是,我有一种直觉,可能会有更严格的约束,因为我生成的那个使用最大对数项的值来约束所有对数项,即使许多项都要小得多。我对么?是否存在更严格的约束,仍然很容易算术表达?

2 个答案:

答案 0 :(得分:2)

log(1) + log(2) + ... + log(N)将为log(1*2*3*4*5*.......*n)

等于log (n!) Striling的近似值 Sterling's Approximation

,因为log(a ^ b)= b log a

,所以可以等同于log(n^n)

相当于(n log n) 并回答你的另一个问题,在这种情况下,我看不出任何更紧密的约束。 我希望这会有所帮助。

答案 1 :(得分:1)

由于log(a)+ log(b)= log(ab),复杂性将是log(n!)

log(n!) = n log(n) - n + O(log(n))

对于大n,右侧由术语n log(n)支配。这意味着O(log(n!))= O(n log(n))。
我们可以使用英镑近似证明log(n!)= O(nlogn),你可以在Why is log(n!) O(nlogn)?进一步阅读