几何级数平方和的复杂度

时间:2018-06-26 14:31:25

标签: time-complexity

我在数据结构课程的作业中有一个问题,我想到了两种算法来解决这个问题,其中一种是O(n ^ 2)时间,另一种是:

T(n)= 3 * n + 1 * 1 + 2 * 2 + 4 * 4 + 8 * 8 + 16 * 16 + ... + logn * logn

我不确定哪个更好。

我知道从1到logn的几何级数之和为O(logn),因为我可以为此使用几何级数公式。但是这里我有几何级数的平方,我不知道如何计算。

1 个答案:

答案 0 :(得分:2)

您可以将其重写为:

log n * log n + ((log n) / 2) * ((log n) / 2) + ((log n) / 4) * ((log n) / 4) ... + 1

如果您将log^2 n替换为x(以便于理解),则会得到:

x + x/4 + x/16 + x/64 + ... + 1

您可以使用公式对序列求和,但是如果您不必形式化,那么基本逻辑就足够了。试想一下,如果您有1/4的馅饼,然后添加1/16的馅饼和1/64等,您可以清楚地看到,它将永远不会完整:

x + x/4 + x/16 + x/64 + ... + 1 < 2x

这意味着其O(x)

x换回log^2 n

T(n) = O(3*n + log^2 n) = O(n)