【问题标题】:Can O(N+NM) be simplified to O(NM)?O(N+NM) 可以简化为 O(NM) 吗?
【发布时间】:2019-07-09 17:34:48
【问题描述】:

假设NM 是算法的两个参数。下面的简化正确吗?

O(N+NM) = O[N(1+M)] = O(NM)

也就是说,在这种情况下是否允许移除常量?

【问题讨论】:

  • 等式是正确的。仅取决于您希望显示复杂性的精确程度。

标签: time-complexity big-o complexity-theory


【解决方案1】:

TL;DR 是的

说明

根据 Big-Oh 表示法的定义,如果 O(.) 中的一个项对于变量的所有足够大的值可证明小于一个常数乘以另一个项,那么您可以删除较小的项。

您可以找到 Big-Oh here 的更精确定义,但一些示例结果如下:

  • O(1000*N+N^2) = O(N^2) 因为一旦 N>1000,N^2 就会使 1000*N 相形见绌

  • O(N+M) 无法简化

  • O(N+NM) = O(NM) 因为 N+NM 1 和 M>1

【讨论】:

    【解决方案2】:

    显然,如果M=0,您无法摆脱N 术语。所以让我们假设M>0。取一个常量k > 0 使得1<=kM (如果M 是整数,k=1,否则取一个常量c 使得0 < c <= Mk=1/c)。我们有

    N+NM  = N(1+M)
         <= N(kM+M)            ; 1<=kM
          = (k+1)NM
          ∊ O(NM)
    

    另一方面,

    NM <= N+NM ∊ O(N+NM)
    

    因此相等。

    【讨论】:

    • 不错的准确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    相关资源
    最近更新 更多