为了获得算法的时间复杂度,我必须简化以下公式:(n ^ 2-n)/ 3。是否有任何适用的规则可以允许我将此表达式进一步简化为更“常见”的Θ(n ^ 2)或类似的东西(我假设结果将是什么,可能是错误的)。< / p>
我根本不知道如何处理这里的减法。通常,如果两个值相互添加,则只考虑分析算法复杂度的最高值。在这种情况下我该怎么做?
答案 0 :(得分:4)
由于Θ
是紧密绑定,如果某个函数f(n)
同时位于Θ(h(n))
和{{1}中,则没有更好的简化它意味着Θ(g(n))
,因此对于您将找到的任何其他函数,示例中的Θ(h(n)) = Θ(g(n))
信息增益为none。
当处理Θ(n^2)
的减法时,n^k - n^m
,在分析大Θ符号时,你可以简单地“抛出”k>m
。
这是因为:
n^m
另一方面:
对于每个n^k - n^m <= n^k
-> and thus it is in O(n^k)
,有一些值m,k
,对于所有N
:n>N
,因此:
0.5n^k >= n^m
由于我们发现了上限和下限,我们可以在n^k - n^m >= n^k - 0.5n^k = 0.5n^k for n > N
-> it is also in Omega(n^k)
时n^k-n^m
得出结论k>m
。
(对于不同Θ-复杂度类的一般f(n),g(n),可以进行类似的证明。