在Master Theorem中,案例1& 3如果情况1中f(n)= O(a-e的log b),我想知道为什么必须减去那里的常数e?
在主定理的第三种情况下,必须加一个常数......为什么会这样?
什么是常数?
答案 0 :(得分:2)
你可能会这样想 - 让我们以第三种情况为例:
f(n) = O(n^(log(b a) + e)) for e < 0
(日志不是(a - e),而是它(登录a的基数b) - e)
这是什么意思?
让我们先建立一件事:右边的整个blob - O(n ^(log(b a)))。这实际上是T(n)函数的渐近行为,没有考虑它的f(n)部分。
这部分不是非常直观,但考虑一下,你会发现它是正确的。 (只需计算f(n)= O(1)的某些值,你就会看到我是对的。因为无所不同的f(n),对于所有的意图和目的,都是O(1)。)
所以,鉴于此,我们看看e。 e做了什么?它确实低于零,我们知道由于我们对它的约束,所以这意味着当放入等式时,e将降低渐近“类”(如in,n ^ 2,log n等) 。换句话说,如果你可以降低aT(n/b)
部分的渐近类并使其等于f(n),那么这意味着aT(n/b)
渐近地大于f( n),我们采取相应的行动
这意味着什么,以及主方法的全部意义,是解决以下问题:O(T(n) - f(n))= O(f(n))。
让我们看一下master方法所依据的通用形式:
T(n) = aT(n/b) + f(n)
aT(n/b)
部分实质上是循环。决定我们将拥有多少次迭代的事情。正确的部分,是循环的主体。实际完成的工作。如果右侧渐近弱于左侧,则右侧渐弱,并且我们有一些可爱的公式来决定渐弱行为,如果它更弱,相等或更大。我们如上所述减去或添加e,以确定它是更大,更小还是相等。
我用文字而不是用我的母语解释这些事情有点难,我希望它能被理解。