Big o 大O-确定函数是否为大O
我的教科书很难解释big-o是如何工作的,而且几乎没有给出没有细节的例子 我有几个练习题想问,但多亏了课本 我不明白如何解决这些问题 这里有一个:Big o 大O-确定函数是否为大O,big-o,Big O,我的教科书很难解释big-o是如何工作的,而且几乎没有给出没有细节的例子 我有几个练习题想问,但多亏了课本 我不明白如何解决这些问题 这里有一个: determine whether each of these functions is O(x) f(x)=x^2+x+1 及 我如何着手解决这些问题?从我在网上收集的资料和教科书中,我发现这非常令人困惑 提前感谢。对于第一个表达式,x^2+x+1不是O(x),因为无论x有多大,第一个表达式的增长速度都比第二个表达式快。通常,x^2+x+1将被称
determine whether each of these functions is O(x)
f(x)=x^2+x+1
及
我如何着手解决这些问题?从我在网上收集的资料和教科书中,我发现这非常令人困惑
提前感谢。对于第一个表达式,
x^2+x+1
不是O(x)
,因为无论x
有多大,第一个表达式的增长速度都比第二个表达式快。通常,x^2+x+1
将被称为O(x^2)
(“二次”),因为x^2
是主要术语
对于第二个表达式,xlogx
是O(x^2)
,因为第二个表达式的增长速度至少与第一个表达式相同。示例约束为c=1
和x>0
。不过,这是一个过于保守的表达式,通常xlogx
会被称为O(xlogx)
(“线性算术”),它自己的复杂性类别
维基百科关于Big-O符号的文章列出了其他常见的符号。虽然有通用的方法来分析函数并确定其大O复杂度,但通常只需熟悉常见的方法并识别表达式或算法中最相关的方法就可以更快。通常,您只会遇到几个常见的复杂性类。按照复杂性的增加顺序,这些是:
- 常数(
)1
- 对数(
)logx
- 线性(
)x
- 线性(或通常只是“n-log-n”)(
)xlogx
- Poynomial(
用于x^c
)c>1
- 指数(
用于c^x
)c>1
x^2+x+1是O(x^2)
,因为你可以选择c=3
和x>1
,而3*x^2
对于x>1
,总是大于或等于x^2+1
。例如,如果您试图将x^3-9x^2
显示为O(x^2)
,则不存在c
和k
值,因此对于所有x>k
,c*x^2
=x^3-9x^2
。这是技术上的答案。更自然但不太严格的方法是将x^2
项识别为“最大”项,这是大oh表示法中您所关心的,因为它表征的是函数的总体增长率,而不是给定x
的确切值。
determine whether each of these functions is O(x^2)
f(x)=xlogx