O(N + NM)可以简化为O(NM)吗?

时间:2019-07-09 17:34:48

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

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

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

换句话说,是否可以在这种情况下删除常量?

2 个答案:

答案 0 :(得分:3)

很显然,如果使用N,就不能摆脱M=0这个词。因此,我们假设M>0。取常数k > 0使得1<=kM(如果M是整数k=1,则取常数c使得0 < c <= M取{ {1}})。我们有

k=1/c

另一方面,

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

因此平等。

答案 1 :(得分:3)

TL; DR

说明

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

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

  • O(1000 * N + N ^ 2)= O(N ^ 2),因为N ^ 2会在N> 1000时使1000 * N变小

  • O(N + M)无法简化

  • O(N + NM)= O(NM),因为N + NM <2(NM)会在N> 1和M> 1