你能用Big O符号做加法/乘法吗?

时间:2015-05-11 13:20:22

标签: algorithm big-o time-complexity

我目前正在学习算法课程,我们正在介绍Big O符号等。上一次,我们谈到了如何

O (n^2 + 3n + 5) = O(n^2)

我想知道,如果相同的规则适用于此:

O(n^2) + O(3n) + O(5) = O(n^2)

另外,请执行以下注释吗?

O(n^2) + n

O(n^2) + Θ (3n+5)

后面的n在O之外,所以我不确定它应该是什么意思。在第二种表示法中,我添加了O和Θ。

4 个答案:

答案 0 :(得分:6)

至少出于实际目的,the Landau O(...) can be viewed as a function(因此其符号的吸引力)。 This function has properties for standard operations,例如:

O(f(x)) + O(g(x)) = O(f(x) + g(x))
O(f(x)) * O(g(x)) = O(f(x) * g(x))
O(k*f(x)) = O(f(x))

用于明确定义的函数f(x)g(x),以及一些常量k

因此,对于您的示例,

是的:O(n^2) + O(3n) + O(5) = O(n^2)
和:
O(n^2) + n = O(n^2) + O(n) = O(n^2)
O(n^2) + Θ(3n+5) = O(n^2) + O(3n+5) = O(n^2)

答案 1 :(得分:1)

符号:

O(n^2) + O(3n) + O(5) = O(n^2)

以及,例如:

f(n,m) = n^2 + m^3 + O(n+m)

滥用等号,因为它违反了平等的公理。为了更正式地更正,您需要将O(g(x))定义为集值函数,其值是所有不会比g(x)增长更快的函数,并使用集合成员符号表示特定函数是集合的成员。

没有为Landau的符号(Big O)定义加法和乘法。

答案 2 :(得分:0)

还有以下符号

O(n^2) + n = O(n^2)

O(n^2) + Θ(3n+5) = O(n^2), Θ(n)

希望它有意义......

答案 3 :(得分:0)

在复杂性理论中,Landau符号用于函数集。因此O(*)不代表单个函数,而是整个集合。 +运算符未定义集,但在分析函数时通常使用以下内容:

O(*) + g(n)

这通常代表一组函数,其中g(n)被添加到O(*)中的每个函数中。结果集可以再次用big-O表示法表示。

O(*) + O(**)

这是类似的。然而,它表现得像一种笛卡尔积。 O(**)中的每个函数都会添加到O(*)的每个函数中。

O(*) + Θ(*)

这里适用相同的规则。但是,由于Θ(**)的松动,结果通常不能表示为O(*)。表达为O(**)仍然是可能的。