【问题标题】:How to add O(N) and O(M)? [closed]如何添加 O(N) 和 O(M)? [关闭]
【发布时间】:2021-07-03 12:36:19
【问题描述】:

假设我有两个 O(N) 操作,所以我将一个表示为 O(N),另一个表示为 O(M)。如果我把它们加在一起,会是什么?不知道两者中哪一个更大。

另外,O(N) + O(M) 和 O(N + M) 一样吗?如果有,为什么?

【问题讨论】:

  • 没有O(N) + O(M)这样的东西。
  • 哪个更大并不重要。重要的是一个是否被另一个函数的函数渐近界,如果是,这个函数界的性质是什么。
  • 两者的输入是否相同?如果是,则 N 和 M 相等。

标签: java time time-complexity big-o


【解决方案1】:

如果你的输入是N,M,那么是的:O(N) + O(M) = O(N+M)

这是为什么呢?

O(N) + O(M) 以 O(N+M) 为界:

O(N) + O(M)a*N + b*M 操作[其中ab 是常量]。

a*N + b*M <= (a+b)*N + (a+b)*M = (a+b)*(N+M) <= c*(N+M) [其中c = a + b]。

c 是常量,所以 c*(N+M)O(N+M)

O(N+M) 以 O(N) +O(M) 为界:

O(N+M) = e*(N+M) = e*N + e*M [for some constant e],

这是O(N) + O(M)

【讨论】:

    猜你喜欢
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2020-10-24
    • 2023-04-10
    • 2022-10-13
    相关资源
    最近更新 更多