【问题标题】:Algorithm complexity when faced with substraction in value面临减法时的算法复杂度
【发布时间】:2015-06-24 17:06:55
【问题描述】:

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

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

【问题讨论】:

    标签: algorithm big-o analysis


    【解决方案1】:

    由于Θ 是一个紧界,因此没有更好的简化方法,如果某个函数f(n) 同时在Θ(h(n))Θ(g(n)) 中,则意味着Θ(h(n)) = Θ(g(n)) ,因此对于您会发现的任何其他功能,在您的示例中超过 Θ(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&gt;N0.5n^k &gt;= 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&gt;mΘ(n^k) 中。
    (可以对不同 Θ 复杂度类中的一般 f(n),g(n) 进行类似的证明)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-21
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      相关资源
      最近更新 更多