主定理:当 f(n) 包含对数的负幂时的问题

Master theorem: issue when f(n) contains negative power of log

所以我使用 Master 定理计算了以下函数的平均情况复杂度:

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 之间的非多项式差)

也支持pdf,说NO.

然而,在 this video 讲师在 12:26 解决了同样的问题,他给出了答案

Θ(nloglogn) 

谁能解释一下哪一个是错误的为什么

正如 Matt Timmermans 正确指出的那样,该陈述不是从主定理得出的,而是从它的扩展版本得出的。

直接用tree method.

解决这个问题很简单

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

开始
  • 级别 0 有 1 个节点值为 n / log(n)

  • 级别 1 有 2 个节点,每个节点的值为 (n / 2) / log(n / 2).

  • ...

  • 关卡i2i个节点,每个节点都有值(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],

for k = log(n).

请注意,西格玛是 kth harmonic series, which is Θ(log(k))。设置 k = log(n) 总共给出 n Θ(log(log(n))) = Θ(n log(log(n))).

他们都是对的。 PDF 中的主定理不适用,但视频中的讲师正在使用涵盖您的案例的主定理的扩展形式。

我没能在视频中找到任何非常好的参考版本,这不是我学到的版本,但这里有在线证明:http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/extended_master_theorem.pdf