复发的复杂度T(n)= T(n-2)+ 1 / lgn?

时间:2015-09-23 14:38:16

标签: algorithm math

这是CLRS书中的一个问题。 算法导论研究组网站给出了以下答案: enter image description here

http://clrs.skanev.com/04/problems/03.html

这个回答是对的吗?我不明白最后两行。

1 个答案:

答案 0 :(得分:2)

不,不是。还有一个拼写错误,而不是无穷大,应该有n。对于严格的数学证明,您应该在另一个stackExchange站点(数学一)上询问。但是为了你的直觉,我可以展示以下内容。

让我们假设n = 2^2^k然后sum of 1/lg(i)等于

1/lg2 + 1/lg3 + 1/lg4 + 1/lg5 + 1/lg6 + 1/lg7 + 1/lg8 + 1/lg9 +
1/lg10 + 1/lg11 + 1/lg12 + 1/lg13 + 1/lg14 + 1/lg15 + ... + 1/lg n-1

这大约是

1/lg2 + 1/lg2 + 1/lg4 + 1/lg4 + 1/lg4 + 1/lg4 + 1/lg8 + 1/lg8 +
1/lg8 + 1/lg8 + 1/lg8 + 1/lg8 + 1/lg8 + 1/lg8 + ... + 1/lg n-1

等于

1/1 + 1/1 + 1/2 + 1/2 + 1/2 + 1/2 + 1/3 + 1/3 +
1/3 + 1/3 + 1/3 + 1/3 + 1/3 + 1/3 + ... + 1/ (2^k - 1) (as lg n = 2^k)

合并后我们有

sum(1/i * 2^i) from 1 to 2^k-1

最后一个成员是n/2 / 2^k-1,其中约为2^(2^k-k-1),这远不是lg lg n = k的theta。当然,总和甚至更大。