主定理:f(n)包含log

时间:2016-10-11 17:35:05

标签: algorithm time-complexity master-theorem

所以我使用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 之间的非多项式差异)

This answer也支持pdf,说NO。

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

Θ(nloglogn) 

任何人都可以解释哪一个错误为什么

2 个答案:

答案 0 :(得分:6)

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

我无法找到对视频中版本的任何真正好的引用,这不是我学到的版本,但有一个在线证明:http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/extended_master_theorem.pdf

答案 1 :(得分:2)

正如Matt Timmermans正确指出的那样,该陈述并未遵循主要定理,但它确实遵循了它的扩展版本。

使用tree method直接解决此问题非常简单。

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

  • 0级有1个节点,其值为 n / log(n)

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

  • ...

  • 等级 i 2 i 节点,每个节点的值为(n / 2 i )/ log(n / 2 i

简化,等级 i 提供 n /(log(n) - i)

注意,总共有 ~log(n) - 1 级别来达到常数。

因此,所有级别的总和是Σ i = 0 ~log(n) - 1 [n /(log(n) - i) ]~nΣ i = 0 k [1 / k]

表示 k = log(n)

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