所以我使用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)
任何人都可以解释哪一个错误和为什么?
答案 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)))。