Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 主方法-为什么可以';t它求解t(n)=t(n/2)和#x2B;n^2/logn?_Algorithm_Master Theorem - Fatal编程技术网

Algorithm 主方法-为什么可以';t它求解t(n)=t(n/2)和#x2B;n^2/logn?

Algorithm 主方法-为什么可以';t它求解t(n)=t(n/2)和#x2B;n^2/logn?,algorithm,master-theorem,Algorithm,Master Theorem,主方法-为什么它不能解t(n)=4*t(n/2)+(n^2)/logn 我意识到它可以解决T(n)=aT(n/b)+f(n)类型的重复出现 在麻省理工学院开放式课程中,他们提到它无法解决上述问题。有人能解释一下原因吗?回答T(n/2)+(n^2)/logn: 情况1不适用,因为f(n)!=O(n^-e)表示任何正e。 案例2不适用,因为f(n)!=Θ(log^k(n))对于任何k>=0 案例3不适用, f(n)=Ω(n^e)表示e=1,但 a*f(n/b)=0 案例3确实适用, a*f(n/b)

主方法-为什么它不能解t(n)=4*t(n/2)+(n^2)/logn

我意识到它可以解决T(n)=aT(n/b)+f(n)类型的重复出现

在麻省理工学院开放式课程中,他们提到它无法解决上述问题。有人能解释一下原因吗?

回答T(n/2)+(n^2)/logn:

情况1不适用,因为f(n)!=O(n^-e)表示任何正e。
案例2不适用,因为f(n)!=Θ(log^k(n))对于任何k>=0
案例3不适用,
f(n)=Ω(n^e)表示e=1,但
a*f(n/b)=0
案例3确实适用,
a*f(n/b)f(n)=(n^2)/logn和n^(loga/logb)。计算上述两个函数之间的差值

比率=(n^2/对数n)/(n^2)

这个比率是对数的。这种复发关系属于案例2和案例3之间的差距。所以马斯特斯定理不适用于这种递推关系


Masters定理适用于上述两个函数之间的差为多项式的情况。

这是因为在上述三种情况下,您无法证明正渐近性质。这意味着当n->infinity n^2/lg(n)->infinity时,这仅仅意味着n^e=w(lg(n)),可以解释为“函数不可包含”不存在划分和征服过程的上限。这似乎是第三种情况,因为f(n)更大,但它也应该满足正则性条件(af(n/b)你能提供一个链接到他们说它不能解决的地方吗?另外,它(n^2)logn还是n^(2logn)不是一个真正的编程问题。主定理解决了一些t(n)=aT(n/b)+f(n)类型的重复出现,但不是全部。对
a
b
f
有一些限制,你的例子不满足这些限制(大概——我自己还没有研究过,但如果麻省理工学院这么说,那么它可能是对的,如果麻省理工学院是错的,那么你的问题就没有意义了!)更多细节请参阅,或者我想你可以在麻省理工学院的材料中找到相同的信息和更多信息……如果你的问题是“为什么对
a
b
f
”有限制,那么我想你真的需要参考主定理的证明,以了解在哪里需要限制才能得到结果。这看起来像是主定理的第三种情况。对不起,伙计们,将其编辑为(n^2)/logn,并将T(n/2)更改为4*T(n/2)虽然后者没有什么区别,但我认为。我稍微编辑了这个问题(放在一些括号中,这样可以清楚地知道什么被什么分开,什么被提升到什么),希望现在它更清晰。
Case 1 does not apply because f(n) != O(n^-e) for any positive e.

Case 2 does not apply because f(n) != Θ(log^k(n)) for any k >= 0

Case 3 does not apply,
    f(n) = Ω(n^e) for e = 1, BUT
    a*f(n/b) <= c*f(n) for no c<1 (works out that c >= 2)
Case 1 does not apply because f(n) != O(n^-e) for any positive e.

Case 2 does not apply because f(n) != Θ(log^k(n)) for any k >= 0

Case 3 does apply,
    a*f(n/b) <= c*f(n) for some c<1 (works out that c >= 0.5)
    and f(n) = Ω(n^e) for e = 1