主定理:当 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)

...

级别 i2i 个节点,每个节点都有值 (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) 包含对数的负幂时的问题的主要内容,如果未能解决你的问题,请参考以下文章

当存在三个术语时应用主定理?

在主定理中找到 f(n) 的值

如何在 Java 中快速计算 2 的大正或负幂?

关于主定理的几点注记

NYOJ 1000

计算大整数的幂时的无限循环Java