面对减值时的算法复杂度

时间:2015-04-17 17:46:13

标签: algorithm big-o analysis

为了获得算法的时间复杂度,我必须简化以下公式:(n ^ 2-n)/ 3。是否有任何适用的规则可以允许我将此表达式进一步简化为更“常见”的Θ(n ^ 2)或类似的东西(我假设结果将是什么,可能是错误的)。< / p>

我根本不知道如何处理这里的减法。通常,如果两个值相互添加,则只考虑分析算法复杂度的最高值。在这种情况下我该怎么做?

1 个答案:

答案 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,对于所有Nn>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),可以进行类似的证明。