大O - 确定函数是否为大O

时间:2016-02-19 00:20:46

标签: big-o

我的教科书很难解释大的工作原理,几乎没有任何细节的例子。

我有一些运动问题,我试图尝试但是感谢教科书 我不明白如何解决这些问题。

这是一个:

determine whether each of these functions is O(x)
f(x)=x^2+x+1

determine whether each of these functions is O(x^2)
f(x)=xlogx

如何解决这些问题?从我在网上收集的内容和教科书中我发现这非常令人困惑......

提前致谢。

1 个答案:

答案 0 :(得分:1)

对于第一个,x^2+x+1不是O(x),因为无论x有多大,第一个表达式的增长速度都快于第二个表达式。通常,x^2+x+1会被称为O(x^2)(“二次”),因为x^2是主导词。

对于第二个,xlogxO(x^2),因为第二个表达式的增长速度至少和第一个一样快。示例约束为c=1x>0。这是一个过于保守的表达,通常xlogx可以说是O(xlogx)(“linearithmic”),它自己的复杂性类。

关于Big-O表示法的维基百科文章列出了其他常见的named complexities。虽然有一般方法来分析函数并确定其Big-O复杂性,但通常更快地熟悉常见函数并识别表达式或算法中最相关的函数。通常,您只会遇到一些常见的复杂性类。按复杂程度递增,这些是:

  • 常数(1
  • 对数(logx
  • 线性(x
  • Linearithmic(或通常只是“n-log-n”)(xlogx
  • Poynomial(x^cc>1
  • 指数(c^x的{​​{1}})