主定理:当 f(n) 包含对数的负幂时的问题
Posted
技术标签:
【中文标题】主定理:当 f(n) 包含对数的负幂时的问题【英文标题】:Master theorem: issue when f(n) contains negative power of log 【发布时间】:2017-02-20 08:22:22 【问题描述】:所以我正在使用 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)
谁能解释一下错误以及为什么?
【问题讨论】:
【参考方案1】:他们都是对的。 PDF 中的主定理不适用,但视频中的讲师正在使用涵盖您的案例的主定理的扩展形式。
我在视频中找不到任何真正好的版本参考,也不是我学到的版本,但这里有一个在线证明:http://homepages.math.uic.edu/~leon/cs-mcs401-s08/handouts/extended_master_theorem.pdf
【讨论】:
查看了所有这些后,我想唯一的区别是负功率等于-1。如果它小于偶数 -1,它属于情况 1,因为它渐近小于 n ^ (log a base b)【参考方案2】:正如马特·蒂默曼斯(Matt Timmermans)正确指出的那样,该陈述并非源于主定理,而是源于其扩展版本。
直接使用tree method解决这个问题很简单。
从 T(n) = 2T (n/2)+ n / log n 开始:
0 级有 1 个节点,值为 n / log(n)。
Level 1 有 2 个节点,每个节点的值 (n / 2) / log(n / 2)。
...
级别 i 有 2i 个节点,每个节点都有值 (n / 2i sup>) / 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 是kth harmonic series, which is Θ(log(k))。设置 k = log(n) 总共给出 n Θ(log(log(n))) = Θ(n log(log(n)))。
【讨论】:
以上是关于主定理:当 f(n) 包含对数的负幂时的问题的主要内容,如果未能解决你的问题,请参考以下文章