主定理:当f(n)包含log的负指数时会出现问题。

7

我正在使用主定理计算以下函数的平均情况复杂度:

T(n) = 2T (n/2)+ n/ log n

根据http://people.csail.mit.edu/thies/6.046-web/master.pdf中的问题7,
上面写着 不适用(f(n)和n log b a 之间存在非多项式差异)答案也支持这个答案。
然而,在这个视频中,讲师在12:26解决了同样的问题,他得出了答案。
Θ(nloglogn) 

能有人解释一下哪一个是错误的,以及为什么吗?

2个回答

6

在查看了它们所有的内容之后,我猜唯一的区别就是当负幂等于-1时。如果小于甚至小于-1,则会落入情况1,因为它渐近地小于n ^(以b为底a的对数)。 - Varun Garg

2
正如Matt Timmermans正确指出的那样,这个陈述并不是从主定理中推导出来的,但它确实可以从一个扩展版本的主定理中推导出来。
使用树方法直接解决这个问题相当简单。
T(n) = 2T (n/2)+ n / log n 开始:
  • 第0级有1个值为 n / log(n) 的节点。

  • 第1级有2个值为 (n / 2) / log(n / 2) 的节点。

  • ...

  • i级有2i个值为(n / 2i) / log(n / 2i)的节点

简化后,第i级贡献了n / (log(n) - i)

请注意,一共需要到达~log(n) - 1个级别才能到达一个常数。
因此,所有级别的总和为i = 0~log(n) - 1[n / (log(n) - i)] ~ n ∑i = 0k[1 / k]
其中k = log(n)
请注意,sigma是k阶调和级数,即Θ(log(k))。将k = log(n)设置为总共n Θ(log(log(n))) = Θ(n log(log(n)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接